尝试生成行的每个唯一组合,其中行中的所有值都被视为单个元素。例如:
Var1 Var2 Var3
1 a b a
2 b a c
3 c c b
4 d d d
创建组合的地方:
Var1 Var2 Var3 Var4 Var5 Var6
1 a b a b a c
2 a b a c c b
3 a b a d d d
4 b a c c c b
5 b a c d d d
6 c c b d d d
我正在使用do.call(rbind,Map(expand.grid,l1,l2)来使用Map,但每个变量都被视为一个单独的值,而我需要整个行组合。
答案 0 :(得分:1)
combs <- combn(1:nrow(df1), 2)
do.call(rbind, Map(function(i,j) cbind(df1[i,],df1[j,]), combs[1,], combs[2,]))
# Var1 Var2 Var3 Var1 Var2 Var3
# 1 a b a b a c
# 11 a b a c c b
# 12 a b a d d d
# 2 b a c c c b
# 21 b a c d d d
# 3 c c b d d d
此方法首先创建可能项目的组合。每行代表您案例中的一个项目。因此,可以基于组合索引对data.frame进行子集化。 Map
和do.call(rbind, ..)
有助于缩短语法,但重要的是cbind(df1[i,], df1[j,])
。