我有一组n个变量,每个变量的值都可以取0或1.我想用R来获得一个矩阵(或者数据帧等并不重要),它包含所有可能的n值的排列。例如,如果n = 3,则可能的值为:
111
110
101
100
010
011
001
000
我怎么能在R?中做到这一点?
答案 0 :(得分:4)
您可以使用expand.grid
来执行此操作。
expand.grid(0:1,0:1,0:1)
<强>输出强>:
# Var1 Var2 Var3
# 1 0 0 0
# 2 1 0 0
# 3 0 1 0
# 4 1 1 0
# 5 0 0 1
# 6 1 0 1
# 7 0 1 1
# 8 1 1 1
如果您想将其粘贴为一个项目,则可以选择:
do.call("paste0", expand.grid(0:1,0:1,0:1))
会导致:
[1] "000" "100" "010" "110" "001" "101" "011"
[8] "111"
同样根据@Jilber Urbina的建议,可以使用expand.grid(1:0,1:0,1:0)[3:1]
作为不同的订单
概括解决方案:
也可以这样做:expand.grid(rep(list(0:1), 3))
,这里3是不重复,所以有人可以根据需要将其改为20或100。
替代方法:
gtools::permutations(n=2,r=3, v=0:1, repeats.allowed = T)
答案 1 :(得分:1)
使用tidyverse
,crossing/unite
也很有用
library(tidyverse)
crossing(v1=0:1, v2=0:1, v3= 0:1) %>%
unite(v, names(.), sep="")