R:如何将不同的文件读入双暗矢量?
问题描述:
我有一个R
关于存储数据的新手问题。R:如何将不同的文件读入双暗矢量?
我有3个不同的文件,每个文件都包含一列。现在我想将它们读入一个结构体x
中,以便x[1]
是第一个文件的列,x[2]
是第二个文件的列等等。所以x
将是一个双暗向量。
我尝试这样做,但它希望x[f]
是一个单一的数字,而不是整个向量:
files <- c("dir1/data.txt", "dir2b/data.txt", "dir3/data2.txt")
for(f in 1:length(files)) {
x[f] <- scan(files[f])
}
我该如何解决这个问题?
答
列表应该有所帮助。在循环之前尝试
x <- vector(mode="list",length=3)
,然后指定为
x[[f]] <- read.table(files[f])
我会建议不要scan
;你应该有更好的运气read.table()
和它的堂兄弟read.csv
。
填好x
后,您可以将其合并为例如经由
y <- do.call(cbind, x)
施加cbind
- 一个由列组合器 - 到列表x
的所有元素。
谢谢!我忘了提及不同文件中的列有不同的长度。所以'do.call(cbind,x)'命令不起作用。没有它,我似乎必须以'x [[1]] $ V1'等方式访问第一列。 – Frank 2010-08-15 21:27:59
重新设置不同的长度:您可能需要传递一次以获得最大长度,并且读入第二遍填充。这也可以让你只返回单个列 - 参见'help(drop)'。 – 2010-08-15 22:05:38