0
我想创建条件随机对而不使用for-loops,因此我可以使用大数据集的代码。起初,我创建一个唯一的ID行和随机指定两个不同的“类型”我行:矢量化条件随机匹配
df<-data.frame(id=1:10,type=NA,partner=NA)
df[sample(df$id,nrow(df)/2),"type"]<-1 ##random 50% type 1
df[which(is.na(df$type)==TRUE),"type"]<-2 ##other 50% type 2
df
id type partner
1 1 2 NA
2 2 1 NA
3 3 1 NA
4 4 1 NA
5 5 2 NA
6 6 1 NA
7 7 1 NA
8 8 2 NA
9 9 2 NA
10 10 2 NA
现在我想他们接受相反类型的随机伙伴。所以我随机我的类型1 ID和匹配他们到一些类型2 ID像这样:
df$partner[which(df$type==2)]<-sample(df$id[which(df$type==1)],
nrow(df)/2)
df
id type partner
1 1 2 4
2 2 1 NA
3 3 1 NA
4 4 1 NA
5 5 2 2
6 6 1 NA
7 7 1 NA
8 8 2 6
9 9 2 3
10 10 2 7
而这就是我卡住的地方。由于某种原因,我想不出一种矢量化的方式来告诉R“取1型ID,看看这些ID在df$partner
中的位置,并返回对应的行ID为df$partner
,而不是NA”。一个for循环的条件随机配对
一个例子可以在这里找到:click
我敢肯定,这是很基本的,可行的,但是,任何帮助表示赞赏!