我尝试做的是使用R中的示例函数将一系列数字拆分成几个相等的部分供以后使用,但我很难在没有重复数字的情况下进行操作我表示我不想要替换值。
trials <- seq(1,21,1)
set.seed(5)
p1.trials <- sample(trials, 7, replace=F)
p1.trials
这产生载体:5,14,18,6,2,12,8,
trials <- trials[-p1.trials]
p2.trials <- sample(trials, 7, replace=F)
p2.trials
这产生载体: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)我得到重复的值(例如,&#34; 3&#34;在p2.trials和p3.trials中)和(b)为什么p3 .trials子集产生10个数而不是7个
答案 0 :(得分:1)
第一次有效,但是在第一次之后,每个试验成员的价值和每个试验成员的索引都不同,问题是使用-
,而是使用setdiff:
trials <- seq(1,21,1)
set.seed(5)
p1.trials <- sample(trials, 7, replace=F)
p1.trials
trials <- setdiff(trials,p1.trials)
答案 1 :(得分: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