遍历多个列表

Looping through multiple lists

如何在 R 中循环遍历多个数据集,从 Python 看来有点难以捉摸。

我们有 4 个列表,想简单地删除所有缺失值。

示例:

a <- c(1,2,3, NA)
b <- c(1,NA,3, NA)

e <- c(1,2,3, 4)
f <- c(NA,2,3, NA)

is.na(a_df) ## -> TRUE

na_list = list(a, b, e, f)

尝试过的:

  1. 复制代码 4 次,这是干的但有效。
for (lst in na_list){
  lst <- zoo::na.aggregate(lst)
}
  1. 使用 Lappy
na_list <- lapply(na_list, zoo::na.aggregate)
> na_list
[[1]]
[1] 1 2 3 2

[[2]]
[1] 1 2 3 2

但是..

> a 
[1]  1  2  3 NA

根据更新的问题进行了修改。请注意,问题中现在显示的输入是数字向量,而不是 R 列表。

首先使用 mget 创建命名列表 L,然后将 na.aggregate 应用于 L 的每个组件,最后将组件写回全局环境;但是,您可能只想将结果保留为 L2,因为很难调试覆盖变量的代码。

library(zoo)

nms <- c("a", "b", "e", "f")

L <- mget(nms)
L2 <- lapply(L, na.aggregate)
list2env(L2, .GlobalEnv)

这也可以代替最后 3 行。

for(nm in nms) assign(nm, na.aggregate(get(nm)))