R语言 如何收集向量中字符的所有组合作为字符向量的列表?

rxztt3cl  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(162)

假设我有两个向量:

x <- c("A", "B")
y <- c("C")

然后,我将以以下方式查找并收集xy的所有组合:

DesiredOutput <- list(c('A', 'C'), c('B', 'C'))

我尝试过将expand.gridsplit结合使用,如下所示:

xy.df <- expand.grid(x, y)
xy.list <- split(xy.df, 1:nrow(xy.df))

然而,这并没有产生所需的输出,例如xy.list[[1]][1]不再是字符,如果我尝试简单地执行as.character(xy.list[[1]][1]),那么它将返回"1",那么,我该怎么做呢?

brc7rcf0

brc7rcf01#

Adapting the answer in stackoverflow.com/questions/38221588/combinations-by-group-in-r you could try:

library(dplyr)
library(tidyr)

  
  df1 <- data.frame(x, y) |> 
    pivot_longer(everything()) |> 
    distinct() |> 
    group_by(name)
    
    as.data.frame(t(combn(df1$value, 2)))
#>   V1 V2
#> 1  A  C
#> 2  A  B
#> 3  C  B

创建于2022年12月10日,使用reprex v2.0.2

相关问题