2

假设我有一个包含字母 a、b、c、d、e 的单列数据框。

a
b
c
d
e

在 R 中,是否可以提取单个字母,例如“a”,并在“a”和其他字母之间产生所有可能的配对组合(没有重复)?combn在这种情况下可以使用命令吗?

a b
a c
a d
a e
4

3 回答 3

3

我们可以用data.frame

data.frame(col1 = 'a', col2 = setdiff(df1$V1, "a"))

-输出

col1 col2
1    a    b
2    a    c
3    a    d
4    a    e

数据

df1 <- structure(list(V1 = c("a", "b", "c", "d", "e")),
    class = "data.frame", row.names = c(NA, 
-5L))

于 2021-06-06T19:01:40.843 回答
2

更新: 使用.before=1参数代码更短:-)

df %>% 
  mutate(col_a = first(col1), .before=1) %>%
  slice(-1)

dplyr您一起可以:

library(dplyr)
df %>% 
  mutate(col2 = first(col1)) %>%
  slice(-1) %>% 
  select(col2, col1)

输出:

  col2  col1 
  <chr> <chr>
1 a     b    
2 a     c    
3 a     d    
4 a     e  
于 2021-06-06T19:08:32.230 回答
2

你可以使用

expand.grid(x=df[1,], y=df[2:5,])

返回

  x y
1 a b
2 a c
3 a d
4 a e
于 2021-06-06T19:19:22.973 回答