【发布时间】:2013-12-12 20:03:40
【问题描述】:
我有一个从制表符分隔文件导入的信息矩阵。导入这些数据后,我会将其合并到一个数据框中,并对其进行一些编辑以使其可用。
最后一步是我将所有数字转换为数字。为了做到这一点,我使用 as.numeric(as.character())。不幸的是,数字不会变成数字。它们仍然是 chr 类型。 这是我的代码:
stringsAsFactors=F
filelist <- list.files(path="C:\\Users\\LocalAdmin\\Desktop\\Correlation Project\\test", full.names=TRUE, recursive=FALSE)
temp <- data.frame()
TSV <- data.frame()
for (i in seq (1:length(filelist)))
{
temp <- read.table(file=filelist[i],head=TRUE,sep="\t")
TSV <- rbind(TSV,temp)
}
for (i in seq(15,1,-1)) #getting rid of extraneous dataframe entries
{
TSV <- TSV[-i,] #deleting by row
}
for(i in seq(1,ncol(TSV),1))
{
TSV[,i] <- as.numeric(as.character(TSV[,i]))
}
感谢您的帮助!
【问题讨论】:
-
即使使用您的代码,如果没有实际数据,我们也很难知道发生了什么。
class(TSV[,1])的输出是什么?如果您可以发布dput(head(TSV[,1]))的输出,那也很有用 - 它可以让我们重新创建一小块 TSV 对象。 -
请做一个可重现的例子并删除所有不需要的东西。另外,为什么要使用 for 循环?
-
@EDi 我会清理代码并上传另一个版本。我正在使用 for 循环遍历数据库,并删除以“b”“a”“l”或“u”开头的所有列。我这样做是因为这些列包含我不需要的信息。
-
@MattParker 生成的数据框基本上是第一列上的几个名字,其余的列只是十进制数字。这是您要求的输出: structure(c("-1.26", "-1.94", "0.5", "-1.79", "0.55", "1.45"), .Names = c("S9_Z", " S4_Y”、“H4_X”、“H_O”、“L461_L”、“H4_Z”。
标签: r type-conversion