Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
生成R中向量元素的所有可能组合_R - Fatal编程技术网

生成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)