如何使用字符串元素展开.grid(一半!)

如何使用字符串元素展开.grid(一半!),r,dataframe,R,Dataframe,“展开网格”的结果如下: d您可以通过首先对数据中的行进行排序,然后使用duplicated除去重复项(x-y=y): d2 = t(apply(d, 1, sort)) d2[!duplicated(d2),] [,1] [,2] [1,] "x" "x" [2,] "x" "y" [3,] "x" "z" [4,] "y" "y" [5,] "y" "z" [6,] "z" "z" 或者,您可以使用combn来获得组合,然后只需要一些数据修补即可获得所需的

“展开网格”的结果如下:


d您可以通过首先对数据中的行进行排序,然后使用
duplicated
除去重复项(
x
-
y
=
y
):

d2 = t(apply(d, 1, sort))
d2[!duplicated(d2),]
     [,1] [,2]
[1,] "x"  "x" 
[2,] "x"  "y" 
[3,] "x"  "z" 
[4,] "y"  "y" 
[5,] "y"  "z" 
[6,] "z"  "z" 
或者,您可以使用
combn
来获得组合,然后只需要一些数据修补即可获得所需的:

levs = c("x", "y", "z")
comb_level1 = combn(levs, 1)
comb_level2 = combn(levs, 2)
t(cbind(rbind(comb_level1, comb_level1), comb_level2))
     [,1] [,2]
[1,] "x"  "x" 
[2,] "y"  "y" 
[3,] "z"  "z" 
[4,] "x"  "y" 
[5,] "x"  "z" 
[6,] "y"  "z"
我认为使用复制的
解决方案更好

levs = c("x", "y", "z")
comb_level1 = combn(levs, 1)
comb_level2 = combn(levs, 2)
t(cbind(rbind(comb_level1, comb_level1), comb_level2))
     [,1] [,2]
[1,] "x"  "x" 
[2,] "y"  "y" 
[3,] "z"  "z" 
[4,] "x"  "y" 
[5,] "x"  "z" 
[6,] "y"  "z"