如何在R语言中使用变量作为列表索引定义命名列表?
在R中用变量值作为列表元素的名称
当然可以解决这个问题!你碰到的是R里列表命名的典型小细节——直接写list(var = 2)时,R会把var当成字面意义的名称,而不是去读取变量var的实际值。下面给你三种实用的解决办法:
方法一:事后用
names()赋值
先创建不带名称的列表元素,再给它设置名称:l <- NULL var <- 2 l <- list(2) names(l) <- as.character(var) # 把变量值转为字符型作为名称这样得到的列表
l就会有名称"2",和你最初的list("2" = 2)效果完全一致。方法二:用
setNames()一步完成
R的setNames()函数可以直接在创建列表时指定名称,非常简洁:l <- NULL var <- 2 l <- setNames(list(2), as.character(var))第一个参数是要创建的列表内容,第二个参数就是我们需要的名称(这里把数值型的
var转成字符型,保证名称格式和目标一致)。方法三:通过索引直接赋值
这种方式更直接,甚至不用提前初始化空列表,R会自动把NULL转为列表类型:l <- NULL var <- 2 l[[as.character(var)]] <- 2这里用双括号
[[ ]]来指定索引名称,直接把变量值转成字符后作为索引,赋值后就得到了名称为"2"的列表元素。
小提示:如果你的变量var本身就是字符型(比如var <- "2"),那可以省略as.character()这一步,直接使用var即可。
内容的提问来源于stack exchange,提问作者N08
相关产品推荐
相关产品推荐

