2016-11-11 9 views
1

RでcreateFolds関数を使用して、成功した結果を返す折り返しを作成しています。しかし、ループを使って各折り返しで何らかの計算を実行すると、私はエラー以下になります。 コードは次のとおりです。下付き文字の範囲外の-Rエラー

set.seed(1000) 
k <- 10 
folds <- createFolds(train_data,k=k,list = TRUE, returnTrain = FALSE) 
str(folds) 

これはとして出力を与えている:

> for(i in 1:k){ 
+ testData <- train_data[folds[[i]], ] 
+ trainData <- train_data[(-folds[[i]]), ] 
+ } 
Error in train_data[folds[[i]], ] : subscript out of bounds 

私が試した:

for(i in 1:k){ 
    testData <- train_data[folds[[i]], ] 
    trainData <- train_data[(-folds[[i]]), ] 
} 

エラーがある私にエラーを与えているが、コードの下に

List of 10 
$ Fold01: int [1:18687] 1 8 10 21 22 25 26 29 34 35 ... 
$ Fold02: int [1:18685] 5 11 14 32 40 46 50 52 56 58 ... 
$ Fold03: int [1:18685] 16 20 39 47 49 77 78 83 84 86 ... 
$ Fold04: int [1:18685] 3 15 30 38 41 44 51 53 54 55 ... 
$ Fold05: int [1:18685] 7 9 17 18 23 37 42 67 75 79 ... 
$ Fold06: int [1:18686] 6 31 36 48 72 74 90 113 114 121 ... 
$ Fold07: int [1:18686] 2 33 59 61 100 103 109 123 137 161 ... 
$ Fold08: int [1:18685] 24 64 68 87 88 101 110 130 141 152 ... 
$ Fold09: int [1:18684] 4 27 28 66 70 85 97 105 112 148 ... 
$ Fold10: int [1:18684] 12 13 19 43 65 91 94 108 134 138 ... 

異なる種子と値は同じですが、同じエラーが発生しています。 何か助けていただければ幸いです。 ありがとうございました!

答えて

0

データフレームtrain_data全体を使用してフォールドを作成しているため、私の理解によれば、問題が発生しています。サンプル、すなわちデータセットの行に対してK折り返しを生成することができる。例えば

data(spam) # from package kernlab 
dim(spam) #has 4601 rows/samples 
folds <- createFolds(y=spam$type, k=10, list=T, returnTrain = T) 
# Here, only one column , spam$type, is used 
# and indeed 
max(unlist(folds)) #4601 
#and these can be used as row indices 
head(spam[folds[[4]], ]) 

全体のデータフレームを使用して、マトリックスを使用することに非常に類似しています。このような行列は、まずベクトルに変換されます。したがって、5x10の行列は実際には50の要素ベクトルに変換され、折り返しの値はこのベクトルのインデックスに対応します。これらの値をデータフレームの行インデックスとして使用しようとすると、オーバーシュートします。

r <- 8 
c <- 10 
m0 <- matrix(rnorm(r*c), r, c) 
features<-apply(m0, c(1,2), function(x) sample(c(0,1),1)) 
features 
folds<-createFolds(features,4)  
folds 
max(unlist(folds)) 

m0[folds[[2]],] # Error in m0[folds[[2]], ] : subscript out of bounds 
関連する問題