【问题标题】:mutable naming list elements at initialization without eval(parse(paste()))初始化时的可变命名列表元素没有 eval(parse(paste()))
【发布时间】:2016-11-23 21:15:15
【问题描述】:

我的问题类似于How to add variable key/value pair to list object?。我想根据变量的值给列表元素一个可变的名称。但我不想重命名列表,而是在初始化时正确命名(我想要一个单行)而不使用“The evil trio (eval, parse, paste)”。

list 工作方式的“问题”在于

key <- "width" 
my_list <- list(key = 32) 

将元素命名(可以理解)"key" 而不是"width",即使key &lt;- "width" 并且渴望得到与my_list &lt;- list(width = 32) 相同的结果。

“邪恶的三重奏解决方案”将是 my_list &lt;- eval(parse(text = paste("list(", key, "=32)"))),但我正在寻找更优雅的解决方案,例如 list(eval(key) = 32)(这不起作用)。

【问题讨论】:

  • 我删除了我的答案,因为它已经在问题中链接了given in the Q&A。 IMO,这是最好的选择
  • @docendodiscimus 总的来说,我同意你的看法,但不幸的是,这个不错的答案(我的赞成票)只有 3 票,并且不能直接被认为是一个合适的答案(正如 Assad Ebrahim 所说的“ hash”,并且他的代码不使用 OP 中的代码)。所以请随时再次发布您的答案(我当然会删除我自己的答案)。

标签: r list naming


【解决方案1】:

用户docendo discimus 给出了答案setNames(list(32), key),但“删除了[他的] 答案,因为它已经在问题中链接了given in the Q&A。”

不幸的是,这个不错的答案(我的赞成票)只有 3 票,并且不能直接识别为合适的答案(因为 Assad Ebrahim 谈到了“哈希”并且他的代码没有使用 OP 中的代码)。

【讨论】:

    猜你喜欢
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多