我必须写一个R脚本,我想在不同的时间加载不同数量的文件。将文件加载到数据帧中,并提取数据帧的某些列。然后将列与cbind
函数合并。我的问题是我不知道如何适应不时加载的不同数量的文件,因为一次可能有3个向量cbind
或另一个时间有5个向量。那么我怎样才能给cbind
一些向量,这样当它没有得到所有向量时它就不会输出错误?当我给它一个固定的数字时会发生这种情况。
raw1 <- read.table()
raw2 <- read.table()
vec1 <- raw1[,2]
vec2 <- raw2[,2]
cbind(vec1,vec2,vec3)
我知道我最好写一些交互式文件,例如tcltk
对话框和某种循环。也许你可以向我提供一些关于如何构建有效循环的想法。
答案 0 :(得分:1)
您可以将数据框存储在列表中,然后使用do.call()将它们绑定。这是cbind任意长度列表的好方法。
datalist <- lapply(filenames, function(i) read.table(i)[, 2])
# ... where filenames are the names of the files you want to read, and
# passing any additional parameters to read.table that are needed
# Then cbind all the entries of datalist
do.call(cbind, datalist)