【问题标题】:Append to a list without needing a for loop in R附加到列表而不需要 R 中的 for 循环
【发布时间】:2021-09-14 05:54:02
【问题描述】:

我想追加到列表而不需要从 for 循环中指定索引。例如

我想使用append() 函数(或类似函数)来获得与l 相同的结果。不幸的是,append()tmp, tmp1 的所有元素组合成一个向量。

tmp <- matrix(rnorm(9),3,3)

tmp1 <- matrix(rnorm(12),4,3)

l <- list(tmp,tmp1)
append(tmp,tmp1)

谢谢。

【问题讨论】:

  • 如果先使用list() 包装对象,则可以使用c()append()c(l, list(tmp))。这就是你所追求的吗?
  • tmp[[length(tmp)+1]] &lt;- tmp1 能给你想要的吗?

标签: r loops append


【解决方案1】:

对于多个列表,请尝试 listdo.call

tmp1 <- tmp2 <- matrix(rnorm(9),3,3)
tmp3 <- tmp4 <- matrix(rnorm(12),4,3)

do.call(list, mget(ls(pattern='^tmp')))
# $tmp1
# [,1]      [,2]        [,3]
# [1,] 0.3155314 0.5651536 -0.06577049
# [2,] 0.3141578 0.4890589  0.08431155
# [3,] 0.5168662 0.3297473  1.02775261
# 
# $tmp2
# [,1]      [,2]        [,3]
# [1,] 0.3155314 0.5651536 -0.06577049
# [2,] 0.3141578 0.4890589  0.08431155
# [3,] 0.5168662 0.3297473  1.02775261
# 
# $tmp3
# [,1]        [,2]      [,3]
# [1,]  0.53883661  1.19557871 0.2140172
# [2,] -1.53804925 -0.08647519 0.1795095
# [3,] -1.09212014  0.19291727 0.8241137
# [4,]  0.03080796  1.75626270 2.1196755
# 
# $tmp4
# [,1]        [,2]      [,3]
# [1,]  0.53883661  1.19557871 0.2140172
# [2,] -1.53804925 -0.08647519 0.1795095
# [3,] -1.09212014  0.19291727 0.8241137
# [4,]  0.03080796  1.75626270 2.1196755

【讨论】:

    【解决方案2】:

    试试appendlist

    > append(list(tmp), list(tmp1))
    [[1]]
               [,1]       [,2]       [,3]
    [1,] -1.6917740  2.2938118 -0.5994428
    [2,] -0.8317474 -2.1021389  1.0077591
    [3,] -0.6893888 -0.3864561  0.5299755
    
    [[2]]
               [,1]       [,2]        [,3]
    [1,]  0.6431510  1.6601869 -0.03001407
    [2,] -0.8729105 -0.8919077  0.68717777
    [3,]  0.4114760 -1.4556726 -1.52659021
    [4,]  1.1093545  1.0937816  1.11888348
    

    【讨论】:

      【解决方案3】:

      您可以使用c() 附加到预先存在的列表。

      tmp <- matrix(rnorm(9),3,3)
      
      tmp1 <- matrix(rnorm(12),4,3)
      
      l <- list(tmp,tmp1)
      l <- c(l, list(tmp))
      l
      [[1]]
                 [,1]       [,2]       [,3]
      [1,] -0.2516447 -0.7518535 -0.6249582
      [2,]  0.5050876 -1.7664830  0.7357084
      [3,] -1.2784381 -1.0874359  0.2894429
      
      [[2]]
                 [,1]        [,2]       [,3]
      [1,]  0.1234092 -1.55219184  0.9395962
      [2,] -1.1052530  1.24147499 -1.3515137
      [3,] -2.1012372 -0.93570884  1.3275042
      [4,] -0.1431186 -0.09361099  0.3836124
      
      [[3]]
                 [,1]       [,2]       [,3]
      [1,] -0.2516447 -0.7518535 -0.6249582
      [2,]  0.5050876 -1.7664830  0.7357084
      [3,] -1.2784381 -1.0874359  0.2894429
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-08-04
        • 2020-03-26
        • 1970-01-01
        • 2017-07-15
        • 2012-06-10
        • 1970-01-01
        • 2020-09-25
        • 1970-01-01
        相关资源
        最近更新 更多