R 更改空值​;只相差一个数字的多个列表的

R 更改空值​;只相差一个数字的多个列表的,r,for-loop,null,assign,R,For Loop,Null,Assign,我想更改空值​​只相差一个数字的多个列表。在本例中,我有3个列表:“a1”、“a2”和“a3”,我想将它们的空值更改为“没有值”。我尝试过使用“粘贴”函数的for循环,但它没有运行。这是我的代码的简化版本: a1<-list(NULL, "a","b") a2<-list("d", NULL,"m") a3<-list("k", NULL,"l") for

我想更改空值​​只相差一个数字的多个列表。在本例中,我有3个列表:“a1”、“a2”和“a3”,我想将它们的空值更改为“没有值”。我尝试过使用“粘贴”函数的for循环,但它没有运行。这是我的代码的简化版本:

a1<-list(NULL, "a","b")
a2<-list("d", NULL,"m")
a3<-list("k", NULL,"l")

for (i in 1:3){
  var<-paste("a", i, sep = "")
  var[var=='NULL']<-"THERE'S NO VALUE"
}

a1我们使用
mget
获取
列表中的对象,然后使用
lappy
列表中循环,用新值替换
NULL
的元素,然后如果需要,使用
list2env
更改全局环境中的对象值

list2env(lapply(mget(paste0("a", 1:3)), function(x) {
     x[sapply(x, is.null)] <- "THERE'S NO VALUE"
     x}), 
    .GlobalEnv)

我们使用
mget
获取
列表中的对象,然后使用
lappy
列表中循环,用新值替换
NULL
元素,然后如果需要,使用
list2env
更改全局环境中的对象值

list2env(lapply(mget(paste0("a", 1:3)), function(x) {
     x[sapply(x, is.null)] <- "THERE'S NO VALUE"
     x}), 
    .GlobalEnv)
a1
[[1]]
[1] "THERE'S NO VALUE"

[[2]]
[1] "a"

[[3]]
[1] "b"

a2
[[1]]
[1] "d"

[[2]]
[1] "THERE'S NO VALUE"

[[3]]
[1] "m"

a3
[[1]]
[1] "k"

[[2]]
[1] "THERE'S NO VALUE"

[[3]]
[1] "l"