2016-05-16 7 views
0

私がやっているのは、Rのサンプル関数を使って、後で使用するために一連の数値を複数の等しい部分に分割することですが、たとえ私が代替値を求めたくないと言っても。Rのサンプル関数の問題

trials <- seq(1,21,1) 
set.seed(5) 
p1.trials <- sample(trials, 7, replace=F) 
p1.trials 

これはベクトルを生じる:これは、ベクトルを生じる8

​​

、5、14、18、6、2、12:19、20、3、7、9、4、16

p3.trials <- trials[-p2.trials] 
p3.trials 

これは、ベクトルを生成する:1、3、9,10、13、16、17、19、20、21

誰もが(a)のIを繰り返し取得していますなぜ私が把握助けることができます値(例えば、例えば、「3」はp2.trialsとp3.trialsにあります)、(b)p3.trialsサブセットが7ではなく10個の数字を生成するのはなぜですか? setdiffを使用し、

答えて

1

初めて動作しますが、最初の時間の後、試験の各メンバーの値および試験の各部材の屈折率は異なって、問題ではなく、-を使用している:

trials <- seq(1,21,1) 
set.seed(5) 
p1.trials <- sample(trials, 7, replace=F) 
p1.trials 
trials <- setdiff(trials,p1.trials) 
+0

これは動作するか、 'library(caret)'から 'createFolds'を調べます。 – TBSRounder

0

sample関数を使用してシーケンスをランダム化した後、3つの等しいグループにサブセットするだけで、すべてをより効率的に処理できます。

# Create data 
trials <- seq(1,21,1) 
set.seed(5) 

# Randomize trials before subsetting 
random_order <- sample(1:21, replace=FALSE) 
trials2 <- trials[random_order] 

# Subset 
p1.trials <- trials2[1:7] 
p2.trials <- trials2[8:14] 
p3.trials <- trials2[15:21] 

# Check 
p1.trials 
## 5 14 18 6 2 12 8 
p2.trials 
## 16 13 17 4 21 3 10 
p3.trials 
## 20 7 19 11 15 9 1