【问题标题】:Having trouble creating a list based on function arguments无法根据函数参数创建列表
【发布时间】:2019-01-06 01:55:12
【问题描述】:

我正在尝试创建一个函数,其中创建了一个命名列表(我需要使用这个特定的结构,因为它需要调用下游函数)。但是,尽管名称被定义为函数的参数,但它并没有被执行。这是一个最小的例子:

make_list = function(first, second){
  return(list(first=second))
}
make_list("name", "value")
#$`first`
#[1] "value"

注意名称“first”,而不是“name”。 First 原本只是作为函数中的一个参数,但它并没有被用作这样的参数。任何建议都非常感谢。

【问题讨论】:

  • 嘿马库斯。您显然比我参与堆栈交换更多,所以我想您的编辑是正确的方法。但我有点困惑。在我的原文中,很明显这是一个控制台输出,后面的位是输出。但是现在,它们看起来不像是cmets吗?
  • 这样更容易复制粘贴你的代码。
  • 这很有意义。感谢您的编辑!

标签: r list function


【解决方案1】:

list(first=second)的声明中,“first”是属性名而不是变量first

make_list = function(first, second){
  ret = list()
  ret[[first]] = second
  return(ret)
}
make_list("name", "value")
#$name
#[1] "value"

【讨论】:

    【解决方案2】:

    您可以使用setNames 在一行中完成此操作。

    make_list <- function(first, second) {
        setNames(list(second), first)
    }
    
    make_list("name", "value")
    # $name
    # [1] "value"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-07
      • 1970-01-01
      • 2018-05-15
      • 1970-01-01
      相关资源
      最近更新 更多