我对 R 很陌生,但似乎这是一个我无法找到答案的特定问题。
我的程序读入一些数据,然后根据我传递的列号向量将该数据的某些列绑定到几个数据帧之一,所以是这样的:
filename <- c("vector", "full", "of", "filenames")
colVal <- (32)
InMat <- data.frame()
for (i in 1:length(filename)){
file <- read.table(filename[i], header=TRUE, fill=TRUE, stringsAsFactors=FALSE)
InMat <- rbind(InMat, file[c(2:dim(file)[1], colVal)])
#...other matricies...
}
我的问题在于只有一个所需列的情况,即 colVal 采用一个值。在这种情况下,我发现 InMat 基本上是从我所需要的转换而来的。更糟糕的是,当我读取多个文件时,它会绑定转置的所需列,因此我得到的行数等于我正在读取的文件数,列数与每个文件的每个所需列中的行数一样多。
似乎如果有 2 个所需的列(即 colVal 采用两个或多个值),那么它会按我的预期行事(即,一列被读取并作为一列存储在 InMat 中,每个附加文件的列存储在下面)。
我的问题是为什么 rbind 在只传递一个所需的列值时会有不同的行为,并且是否有一种简单的方法(读取;不添加一些笨拙的 if 或 for 循环来检查)来避免这种情况?
谢谢!