r语言 - 循环遍历多个列表



如何在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次,这是DRY,但工作。
for (lst in na_list){
lst <- zoo::na.aggregate(lst)
}
  1. Using 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。聚合到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)))

最新更新