【问题标题】:Is there a elegant way to name the elements of a list according to the variables it has been composed of? [duplicate]有没有一种优雅的方法可以根据组成列表的变量来命名列表的元素? [复制]
【发布时间】:2015-04-15 13:01:23
【问题描述】:

我正在寻找一个功能与list 相同,但将输入变量的名称放入列表的元素名称中:

a <- 2
b <- c("foo","bar")
betterlist(a,b)

[[a]]
[1] 2

[[b]]
[1] "foo" "bar"

list(a,b) 的输出中,名称"a""b" 不会出现。它是否已经存在于任何包中?

【问题讨论】:

  • 我不知道这是否更好,但你可以这样做 mget(ls(pattern = "[a-z]")) 或者如果你的环境中没有任何其他对象,可以这样做 mget(ls())
  • mget(c("a", "b"))
  • @Ben Bolker:我同意,这是重复的。我可能错过了。

标签: r


【解决方案1】:

这是使用 ... 的一种方法:

betterlist = function(...) {
  result <- list(...)
  resultnames <- lapply(substitute(list(...)), deparse)
  names(result) <- resultnames[-1]
  return(result)
}

正如R help 所说,这实际上应该更容易

表达式 list(...) 计算所有此类参数并在命名列表中返回它们 [...]

但对我来说, list(...) 给了我一个未命名的列表(因此在上面的函数中明确命名)。

【讨论】:

    【解决方案2】:

    第一个猜测:

    list(a = a, b = b)
    

    【讨论】:

      猜你喜欢
      • 2023-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-24
      • 1970-01-01
      • 1970-01-01
      • 2011-02-17
      相关资源
      最近更新 更多