更改仅相差一个数字的多个列表的空值
Change the null values of multiple lists that only differ by a number
我想更改仅相差一个数字的多个列表的空值。在此示例中,我有 3 个列表:“a1”、“a2”和“a3”,我想将它们的空值更改为“THERE'S NO VALUE”。我试过使用“粘贴”功能的 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"
}
我也试过赋值函数,但是它改变了所有变量,我只想改变每个变量的空元素(我怀疑为什么,但我不知道如何改变函数来工作):
for (i in 1:3){
var<-paste("a", i, sep = "")
assign(var,var[var=='NULL']<-"THERE'S NO VALUE")
}
提前致谢。
我们使用mget
获取list
中的对象,然后用lapply
遍历list
,替换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"
我想更改仅相差一个数字的多个列表的空值。在此示例中,我有 3 个列表:“a1”、“a2”和“a3”,我想将它们的空值更改为“THERE'S NO VALUE”。我试过使用“粘贴”功能的 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"
}
我也试过赋值函数,但是它改变了所有变量,我只想改变每个变量的空元素(我怀疑为什么,但我不知道如何改变函数来工作):
for (i in 1:3){
var<-paste("a", i, sep = "")
assign(var,var[var=='NULL']<-"THERE'S NO VALUE")
}
提前致谢。
我们使用mget
获取list
中的对象,然后用lapply
遍历list
,替换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"