更改仅相差一个数字的多个列表的空值

问题描述

我想更改仅相差一个数字的多个列表的空值。在此示例中,我有3个列表:“ a1”,“ a2”和“ a3”,并且我想将其空值更改为“ THERE'S NO VALUE”。我已经尝试过使用“粘贴”功能进行for循环,但无法运行。这是我的代码的简化版本:

functionAppScaleLimit

我也尝试过使用assign函数,但是它会更改所有变量,并且我只想更改每个变量的null元素(我怀疑是为什么,但是我不知道如何更改该函数才能工作):

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

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

谢谢。

解决方法

我们使用mget来获取list中的对象,然后用list遍历lapply,用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"

-现在检查对象

np.random.binomial(n=1,p=0.9,size=[1000])