【问题标题】:Add named vector to a list将命名向量添加到列表中
【发布时间】:2012-02-20 08:31:25
【问题描述】:

这是非常基本的,但我似乎无法弄清楚

假设我有一个变量条目列表:

lst <- list(a=1:4, b=rep('k', 5), c=3)

如果我想用指定的名称向它添加一个向量,我应该可以这样做:

c(f=1:5, lst)

但不是创建一个名为“f”的条目,其中包含 1 2 3 4 5,而是创建五个条目 (f1 - f5),每个条目包含一个数字。

如何抑制这种行为?

我知道我可以使用

lst$f <- 1:5

但我想在函数调用中附加列表...

【问题讨论】:

    标签: r


    【解决方案1】:

    f 变成一个列表,然后将其连接起来:

    c(list(f=1:5), lst)

    【讨论】:

      【解决方案2】:

      更通用的解决方案是附加:

      append(lst, list(f=1:5), after=0)# after - position to append
      

      【讨论】:

        【解决方案3】:

        你可以这样做:

        lst[[key]] <- any_object
        

        (注意双方括号[[]]

        any_object 当然可以是向量。

        即使key 的确切值存储在变量中并且您事先不知道它,或者如果它是在for 循环中迭代的变量,此方法也可以使用:

        count <- list()
        for (k in c("boys","girls","other")) {
          count[[k]] <- sum(data == k)
        }
        

        【讨论】:

          【解决方案4】:

          这是一个将一个(或多个)项目附加到列表的简单函数:

          lappend <- function (lst, ...){
          lst <- c(lst, list(...))
            return(lst)
          }
          
          > a <- list()
          > a
          list()
          
          > lappend(a,c(1,2,3))
          [[1]]
          [1] 1 2 3
          
          > lappend(a, c(4,5,6), c(7,8,9))
          [[1]]
          [1] 4 5 6
          
          [[2]]
          [1] 7 8 9
          

          希望有帮助!! 再见。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-07-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-02-07
            • 1970-01-01
            • 2011-07-02
            • 2021-02-26
            相关资源
            最近更新 更多