私はRにかなり慣れていませんが、これは私が答えを見つけることができなかった特定の問題であるようです.
私のプログラムはいくつかのデータを読み取り、そのデータの特定の列を、渡す列番号のベクトルに基づいていくつかのデータフレームの1つに再バインドします。次のようになります。
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...
}
私の問題は、必要な列が 1 つしかない場合、つまり colVal が 1 つの値を取る場合にあります。この場合、InMat は本質的に必要なものから転置されていることがわかります。さらに悪いことに、複数のファイルを読み取ると、転置された目的の列が再バインドされるため、読み込んでいるファイルの数と同じ数の行が取得され、各ファイルの目的の各列にある行と同じ数の列が得られます。
必要な列が 2 つある場合 (つまり、colVal が 2 つ以上の値を取る)、期待どおりに動作するようです (つまり、列が読み取られて列として InMat に格納され、追加の各ファイルの列が下に格納されます)。
私の質問は、目的の列値が 1 つだけ渡された場合に rbind の動作が異なるのはなぜですか、また、これを回避する簡単な方法 (読む; 不格好な if または for ループを追加してチェックしない) がある場合です。
ありがとう!