【发布时间】:2019-05-28 06:06:27
【问题描述】:
如何在向量列表中将所有向量元素设置为 NA?
基本上,我想保留现有列表的结构和名称,但清空所有值,以便稍后填写。我在下面提供了一个带有几个解决方案的最小示例。我更喜欢基本和 tidyverse(尤其是 purrr)解决方案,但可以采用任何比我下面的方法更好的方法。
my_list <- list(A = c('a' = 1, 'b' = 2, 'c' = 3), B = c('x' = 10, 'y' = 20))
ret_list <- my_list
# Approach 1
for (element_name in names(my_list)) {
ret_list[[element_name]][] <- NA
}
ret_list
# $A
# a b c
# NA NA NA
#
# $B
# x y
# NA NA
# Approach 2
lapply(my_list, function(x) {x[] <- NA; return(x)})
# $A
# a b c
# NA NA NA
#
# $B
# x y
# NA NA
【问题讨论】:
-
这两种方法对我来说都很好(特别是如果您事先在方法 2 中定义函数而不是匿名内联)。为什么要尝试比这更聪明?您想弥补哪些具体的缺点?
-
只是借此机会更好地了解 R。在我看来,这是一个如此普遍的操作,必须有一个标准的最佳实践方法。
标签: r