首页 > 解决方案 > 格式化数据框列表的列表

问题描述

我正在努力学习purr,所以我寻找与之相关的解决方案。假设我有一个包含 3 个元素的列表,其元素本身就是数据框列表:

a1 <- data.frame(a = c('alfa', 'beta', 'omega'), b = rnorm(3,0,1), c = NA)
a2 <- data.frame(a = c('lambda', 'delta', 'epsilon'), b = rnorm(3,0, 1), c = NA)
b1 <- data.frame(a = c('lambda', 'delta', 'alfa'), b = rnorm(3, 1, 1), c = 1)
b2 <- data.frame(a = c('beta', 'delta', 'epsilon'), b = rnorm(3, 1, 2), c = c(0, 1, NA))

a <- list(a1, a2)
b <- list(b1, b2)

L <- list(a,b)

如何格式化 L 以map*_使所有第一列都转换为字符(我不需要知道任何列都可能包含因子的一般情况)并且还NA删除了 s ?

由于嵌套不止一层,我不知道如何在不取消嵌套的情况下调用函数。

标签: rlistpurrr

解决方案


一个dplyr选项purrr可能是:

map_depth(.x = L, 2, ~ .x %>%
           mutate_at(1, as.character) %>%
           na.omit())

[[1]]
[[1]][[1]]
[1] a b c
<0 rows> (or 0-length row.names)

[[1]][[2]]
[1] a b c
<0 rows> (or 0-length row.names)


[[2]]
[[2]][[1]]
       a         b c
1 lambda 0.6691767 1
2  delta 1.5106571 1
3   alfa 1.8121246 1

[[2]][[2]]
      a          b c
1  beta -0.4429880 0
2 delta -0.7539317 1

推荐阅读