在R中创建列表时如何使用变量作为元素名称

问题描述 投票:0回答:4

假设我有

label <- 'My val'

我尝试创建列表

Output <- list(
  label = pi
)

我知道列表中第一个(唯一)对象的名称是

"label"
,但我想要
"My val"

我明白我能做到

names(Output) <- label

但是这个列表很长,我宁愿在

list
函数中命名它。

r
4个回答
3
投票

不可以,使用

list()
函数创建列表时不能引用名称变量。它只会将任何变量名称解释为条目的名称。但构建列表后,您可以更改名称:

label <- 'My val'
Output <- list(pi)
names(Output)=label

2
投票

另一个选项是

lst
来自
dplyr

library(dplyr)
lst(!!label := pi)
#$`My val`
#[1] 3.141593

1
投票

也许这可以帮助您,但如果您可以分享更详细的示例,那就更好了,因为我认为可能涉及更多变量名称:

label <- 'My val'

Output <- list(
  label = pi
)

Output |> 
  setNames(label)

$`My val`
[1] 3.141593

0
投票

data.tables Replace2() 可能会有所帮助:

library(data.table)
labels <- list(l1 =  'My val', l2 = 'Other label')
Output <- eval(data.table::substitute2( 
  list( l1 = pi, 
        l2 = exp(1)), 
  env = labels 
) )
© www.soinside.com 2019 - 2024. All rights reserved.