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的所有元素。

+0

谢谢!我忘了提及不同文件中的列有不同的长度。所以'do.call(cbind,x)'命令不起作用。没有它,我似乎必须以'x [[1]] $ V1'等方式访问第一列。 – Frank 2010-08-15 21:27:59

+1

重新设置不同的长度:您可能需要传递一次以获得最大长度,并且读入第二遍填充。这也可以让你只返回单个列 - 参见'help(drop)'。 – 2010-08-15 22:05:38