【发布时间】:2023-03-29 09:28:01
【问题描述】:
我想动态地将元素添加到一个空列表中。列表中的每个元素都应该在一组变量之后自动命名,这些变量的值会有所不同。
但是,我似乎无法找到一种方法来动态命名列表元素而不会出错。考虑下面的例子:
L <- list()
var1 <- "wood"
var2 <- 1.0
var3 <- "z4"
varname <- paste(var1, as.character(var2), var3, sep="_")
# This works fine:
L$"wood_1_z4" <- c(0,1)
L$"wood_1_z4"
0 1
# This doesn't!!
L$paste(var1, as.character(var2), var3, sep="_") <- c(0,1)
Error in L$paste(var1, as.character(var2), var3, sep = "_") <- c(0, 1) :
invalid function in complex assignment
# Ths doesn't either ...
L$eval(parse(text = "varname")) <- c(0,1)
Error in L$eval(parse(text = "varname")) <- c(0, 1) :
target of assignment expands to non-language object
有没有办法做到这一点?
【问题讨论】:
-
使用
[[:L[[paste(var1, as.character(var2), var3, sep="_")]]<-c(0,1) -
如果给
names(L)赋值呢? -
$不对右侧进行任何评估,因此会出现错误。