R中数据帧列表中每一列的组合

魁布尔

我有一个数据框列表,每个数据框都有两列。列在每个数据框中具有相同的类和名称,并且通常仅行数不同,例如,

lst = list(data.frame(n=1:3,
                          l=letters[seq(1:3)]),
            data.frame(n=1:5,
                          l=letters[seq(1:5)]),
            data.frame(n=1:8,
                          l=letters[seq(1:8)]))

我正在尝试创建一个新的数据帧列表,其中包含每一列(而不是列之间)中值的所有可能的成对组合,但是我一直无法正确地做到这一点。

这段代码为我提供了单列所需的输出,但是我无法弄清楚如何使用lapply或for循环将其应用于列表中所有数据框的所有列,尽管我确定必须有我缺少的东西。

library(gtools)
library(tidyverse)

as.data.frame(combinations(nrow(lst[[1]]), 2, v=lst[[1]]$n, set=T, repeats.allowed=F)) %>%
  transmute(x = paste(V1, V2, sep=","))

我真的很感谢任何提示!

阿克伦

我们可以使用map遍历list,然后summarise_all应用combinations

library(dplyr)
library(purrr)
library(tidyr)
library(gtools)
library(stringr)
map(lst, ~ .x %>% 
      mutate_if(is.factor, as.character) %>%
      summarise_all(~ list(combinations(n(),  2, v = .,
          set  = TRUE,  repeats.allowed = FALSE) %>% 
          as_tibble %>%
          transmute(x = reduce(., str_c,  sep=", ")))) %>% 
      unnest(everything(), names_repair = 'unique') %>% 
      rename_all( ~ str_remove(., "\\.+")))
#[[1]]
# A tibble: 3 x 2
#  x1    x2   
#  <chr> <chr>
#1 1, 2  a, b 
#2 1, 3  a, c 
#3 2, 3  b, c 

#[[2]]
# A tibble: 10 x 2
#   x1    x2   
#   <chr> <chr>
# 1 1, 2  a, b 
# 2 1, 3  a, c 
# 3 1, 4  a, d 
# 4 1, 5  a, e 
# 5 2, 3  b, c 
# 6 2, 4  b, d 
# 7 2, 5  b, e 
# 8 3, 4  c, d 
# 9 3, 5  c, e 
#10 4, 5  d, e 

#[[3]]
# A tibble: 28 x 2
#   x1    x2   
#   <chr> <chr>
# 1 1, 2  a, b 
# 2 1, 3  a, c 
# 3 1, 4  a, d 
# 4 1, 5  a, e 
# 5 1, 6  a, f 
# 6 1, 7  a, g 
# 7 1, 8  a, h 
# 8 2, 3  b, c 
# 9 2, 4  b, d 
#10 2, 5  b, e 
# … with 18 more rows

或者使用另一个选项crossing,然后删除镜像行和两列相同的行filter

map(lst, ~ 
       map(.x %>%
               mutate_if(is.factor, as.character),
               ~ crossing(x1 = .x, x2 = .x) %>% 
                   filter(x1 != x2)  %>% 
                   filter(!duplicated(cbind(pmin(x1, x2), pmax(x1, x2)))) %>%
                   transmute(x = reduce(., str_c, sep=", "))) %>% 
               bind_cols %>% 
               rename_all(~ str_remove(., "\\.+")))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从数据帧列表中依次提取每一列

来自分类Dev

在python中从pandas数据帧的每一列创建列表嵌套

来自分类Dev

R中数据帧的每一列的第25个分位数

来自分类Dev

如何在R的数据帧的每一列中过滤NA

来自分类Dev

r中数据帧不同行的每一列的最大值

来自分类Dev

在数据帧的每一列中查找最接近零的值-R

来自分类Dev

如何在R的数据框中计算列表列的每一列中的元素

来自分类Dev

如何通过迭代组合存储在数据帧中的变量名称来构建两个字符串的列表,以便每一列中都有一个

来自分类Dev

数据中每一列的ggplot

来自分类Dev

根据 R 中数据帧中另一列的条件过滤数据帧

来自分类Dev

计算和打印数据帧中每一列的零和负值

来自分类Dev

R中每一列的均值

来自分类Dev

如何替换数据框中每一列中的所有列表值

来自分类Dev

提取数据帧中dplyr函数中列的定义范围内值不为NA的每一列的列名

来自分类Dev

向数据框列表中的每一列添加列

来自分类Dev

向数据框列表中的每一列添加列

来自分类Dev

在R中,如何在不重命名每一列的情况下平均划分一组数据帧的行?

来自分类Dev

如何将数据帧中每一列的数据类型存储到新数据帧的新列中

来自分类Dev

仅折叠R中数据帧的第一列,其余列数据保持不变

来自分类Dev

R数据帧:根据另一列中的值更改第一列中的值

来自分类Dev

R数据帧-使用一列中的公共值查找另一列中的值

来自分类Dev

将零填充到列表中所有数据帧中的一列

来自分类Dev

Purrr-有条件地突变数据帧列表中的一列

来自分类Dev

在包含超过一列的列表的数据帧组行中

来自分类Dev

如何获取列表中每一列的摘要

来自分类Dev

R将数据框中的每一列除以最后一行的值

来自分类Dev

R将数据框中的每一列除以最后一行的值

来自分类Dev

通过求和r将多列合并到数据帧中的一列

来自分类Dev

快速测试R数据帧以查看一列中的行值是否在数据帧的另一列中

Related 相关文章

  1. 1

    从数据帧列表中依次提取每一列

  2. 2

    在python中从pandas数据帧的每一列创建列表嵌套

  3. 3

    R中数据帧的每一列的第25个分位数

  4. 4

    如何在R的数据帧的每一列中过滤NA

  5. 5

    r中数据帧不同行的每一列的最大值

  6. 6

    在数据帧的每一列中查找最接近零的值-R

  7. 7

    如何在R的数据框中计算列表列的每一列中的元素

  8. 8

    如何通过迭代组合存储在数据帧中的变量名称来构建两个字符串的列表,以便每一列中都有一个

  9. 9

    数据中每一列的ggplot

  10. 10

    根据 R 中数据帧中另一列的条件过滤数据帧

  11. 11

    计算和打印数据帧中每一列的零和负值

  12. 12

    R中每一列的均值

  13. 13

    如何替换数据框中每一列中的所有列表值

  14. 14

    提取数据帧中dplyr函数中列的定义范围内值不为NA的每一列的列名

  15. 15

    向数据框列表中的每一列添加列

  16. 16

    向数据框列表中的每一列添加列

  17. 17

    在R中,如何在不重命名每一列的情况下平均划分一组数据帧的行?

  18. 18

    如何将数据帧中每一列的数据类型存储到新数据帧的新列中

  19. 19

    仅折叠R中数据帧的第一列,其余列数据保持不变

  20. 20

    R数据帧:根据另一列中的值更改第一列中的值

  21. 21

    R数据帧-使用一列中的公共值查找另一列中的值

  22. 22

    将零填充到列表中所有数据帧中的一列

  23. 23

    Purrr-有条件地突变数据帧列表中的一列

  24. 24

    在包含超过一列的列表的数据帧组行中

  25. 25

    如何获取列表中每一列的摘要

  26. 26

    R将数据框中的每一列除以最后一行的值

  27. 27

    R将数据框中的每一列除以最后一行的值

  28. 28

    通过求和r将多列合并到数据帧中的一列

  29. 29

    快速测试R数据帧以查看一列中的行值是否在数据帧的另一列中

热门标签

归档