corr <- function(directory, threshold = 0) {
files_full<-list.files(directory, full.names=TRUE)
v<-vector()
for (i in 1:10) {
a <- (read.csv(files_full[i]))
b <- subset(a, (!is.na(a[,2])) & (!is.na(a[,3])))
c <- length(b[ ,4])
if (c > threshold) {
d <- cor(b[ ,2],b[ ,3])
} else {
d <- vector(mode="numeric", length = 0)
}
v <- rbind(v, d)
}
v
}
cr <- corr("specdata", 0)
私はディレクトリに.csvファイルのセットを持っており、それらを上記の関数の引数として渡したいと思っています。各ファイルについて、完全なケースの数を選択したいとし、その数が2番目の関数の引数で設定したしきい値より大きい場合、ファイルの2つのカラムに保持されている値の間に相関を生成したい3)。最終的な目的は、しきい値条件が満たされる各ファイルの相関の値を含むベクトルです。閾値条件が満たされない場合は、長さ0の数値ベクトルを返したい。R:ループ条件がついているのはなぜですか?
最初のファイルの完全なケースの数は117です。上記の関数は、しきい値がこの数を下回っている限り正常に機能します。私は、しきい値を設定した場合は> = 117関数は長さ0のベクトルを返します。そして、私は警告
In rbind(v, d) :
number of columns of result is not a multiple of vector length (arg 2)
を取得するには文が完全な数の値に立ち往生されている場合には条件のように思えますループするのではなく、最初のファイルのケース。
私が間違っている場所を誰かが説明できると大変感謝しています!