给定这样的data.frame列表:
list_dfs <- list(a = mtcars, b = quakes, a = mtcars, c = USArrests)
names(list_dfs)
#> [1] "a" "b" "a" "c"
如何通过列表中data.frame的名称应用函数?具体来说,在这种情况下,我希望将rbind
data.frames一起调用a
,以使结果列表仅包含三个元素。如果我拥有绑定它们的全部权限,我会这样做:
do.call(rbind, list_dfs)
#> Error in rbind(deparse.level, ...): numbers of columns of arguments do not match
显然,这是行不通的。如果这些列确实匹配,则可以使用。
list_mtcars <- list(a = mtcars, a = mtcars)
mt_bound <- do.call(rbind, list_mtcars)
我想知道是否有条件地复制do.call
&rbind
件,以便仅命名列表中的那些元素a
由行绑定。
任何tidyverse或基本R解决方案是赞赏的。
我们可以bind_rows
在list
按names
列表的分割后使用
library(dplyr)
library(purrr)
split(list_dfs, names(list_dfs)) %>%
map(bind_rows)
或在 base R
lapply(split(list_dfs, names(list_dfs)), function(dat) do.call(rbind, unname(dat)))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句