2016-10-21 17 views
0

こんにちは私は、データフレーム(DB)からランダムに抽出するループで10のサブトレーニングセット(75%のトレーニングセットから)を作成しようとしています。私は使用していますdata.frame loop with loop

smp_size<- floor((0.75* nrow(DB))/10) 
train_ind<-sample(seq_len(nrow(DB)), size=(smp_size)) 

training<- matrix(ncol=(ncol(DB)), nrow=(smp_size)) 
for (i in 1:10){ 
    training[i]<-DB[train_ind, ] 
} 

何が問題になっていますか? 10個の同じサイズのサブセットにデータセットをパーティションに

+3

を使用しています。エラーメッセージはありますか?出力に満足していませんか?あなたの質問にこれらのことを含め、いくつかのサンプルデータも提供してください( 'mtcars'のような組み込みデータセットを使うことができます)。良い質問のポイントは、コードを実行してマシン上で手間をかけずに実行できることです。 http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – jakub

+0

ok thx ..私はここに新しい..申し訳ありません – Tyu1990

答えて

1

は、次のように使用することができます:split()だけあなたに同じサイズのサブセットを与えることが

# Randomly order the rows in your training set: 
DB <- DB[order(runif(nrow(DB))), ] 
# You will create a sequence 1,2,..,10,1,2,...,10,1,2.. you will use to subset 
inds <- rep(1:10, nrow(DB)/10) 
# split() will store the subsets (created by inds) in a list 
subsets <- split(DB, inds) 

注意、、。したがって、観測の一部がサブセットのいずれにも含まれない可能性があります(おそらく)。あなたが他の人よりも大きくなるように、いくつかのサブセットを引き起こし、すべての観測を使用したい場合は

、あなたは私に言うinds <- rep(1:10, length.out = nrow(DB))代わり

+0

よ、それは動作します..ありがとう! !ちょっと質問があります。それはばかげているかもしれません:どうしてあなたはrunif()を使っていますか? – Tyu1990

+0

はランダムな行の再配分のためのものですか? – Tyu1990

+0

はい、それは 'nrow(DB)'乱数値を与え、それから順序付けられます。その乱数の順序は、当然無作為でもあります。あなたに行インデックスのランダムな混乱を与える –