生成R中向量元素的所有可能组合
有向量生成R中向量元素的所有可能组合,r,R,有向量 v1 <- LETTERS[1:4] 我试过使用combn、outer和expand.grid,但没有得到我想要的 do.call(rbind, lapply(seq_along(v1), function(i) data.frame(x = v1[i], y = v1[-i]))) 或 或 如果您想将AA-DD的所有可能组合放在两列中,可以使用tidyrcrossing功能 这就是我的方法: library(tidyverse) v1 <- LETTERS[1:4]
v1 <- LETTERS[1:4]
我试过使用combn
、outer和expand.grid
,但没有得到我想要的
do.call(rbind, lapply(seq_along(v1), function(i) data.frame(x = v1[i], y = v1[-i])))
或
或
如果您想将AA-DD的所有可能组合放在两列中,可以使用tidyr
crossing
功能
这就是我的方法:
library(tidyverse)
v1 <- LETTERS[1:4]
v2 <- v1
final_df <- crossing(v1, v2)
库(tidyverse)
v1所有溶液都很好。只需一行额外的命令,就可以过滤掉包含A、B、C和D的行
用Matt的例子
最终成本百分比
过滤器(v1!=v2)
谢谢 您的预期输出不清楚。您生成了一个D和da,但没有使用C的值。您可以尝试expand.grid(v1,v1)
或combn(v1,2)
您是对的!很抱歉。
do.call(rbind, lapply(seq_along(v1), function(i){
do.call(rbind, lapply(seq_along(v1)[-i], function(j){
c(v1[i], v1[j])
}))
}))
d = expand.grid(replicate(2, v1, simplify = FALSE))
d[d$Var1 != d$Var2,]
outer(v1, v1, paste, sep="")
[,1] [,2] [,3] [,4]
[1,] "AA" "AB" "AC" "AD"
[2,] "BA" "BB" "BC" "BD"
[3,] "CA" "CB" "CC" "CD"
[4,] "DA" "DB" "DC" "DD"
library(tidyverse)
v1 <- LETTERS[1:4]
v2 <- v1
final_df <- crossing(v1, v2)