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



我想更改空值​​只相差一个数字的多个列表。在这个例子中,我有3个列表:;a1"a2";以及";a3";,并且我想要将它们的空值改变为"0";没有价值;。我尝试过使用"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"
}

我也尝试过赋值函数,但它会更改所有变量,我只想更改每个变量的null元素(我怀疑为什么,但我不知道如何更改函数(:

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

提前谢谢。

我们使用mget获取list中的对象,然后用lapplylist上循环,用新值替换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"

相关内容

  • 没有找到相关文章

最新更新