【问题标题】:add elements of a vector to elements of a list in R将向量的元素添加到 R 中列表的元素
【发布时间】:2012-11-13 16:09:45
【问题描述】:

我有一个简单的列表和一个长度相同的简单向量。我想将向量的ith 元素添加到列表的ith 元素中。有没有比这个 for 循环做得更好的方法?

test <- list(element1=list(a=1,b=2,a1=8),
             element2=list(a=9,d=17))
vec <- c(12,25)

for (i in 1:length(test)){
    test[[i]] <- c(test[[i]],vec[i])
}

【问题讨论】:

    标签: r loops


    【解决方案1】:

    使用sapply 的多元等效项,即mapply。在下面的代码中,函数c 应用于每个testvec 的第一个元素,然后是第二个元素,等等...

    test = mapply(c, test, vec)
    

    【讨论】:

    • 非常感谢。当我尝试 lapply 但没有让它工作时,我是如此接近。很高兴你能帮上忙。
    • 有没有办法为两个附加的列表元素提供相同的固定名称?我试图让 "names&lt;-"mapply 使用一些东西
    • 您必须将vec 强制转换为命名元素列表,然后您可以使用lapplynames&lt;-。例如mapply(c,test,lapply(as.list(vec), `names&lt;-`, 'boo'))
    • @hans0l0 是的,您可以通过一个命令完成所有操作:mapply(function(x,y) c(x, "yourname" = y), test, vec)
    【解决方案2】:

    您始终可以将 for 循环转换为 lapply/apply/sapply。这是您的代码的示例。

    "for"(i, 1:length(test), test[i] <- c(test[[i]], vec[i]))
    
    test <- lapply(1:length(test), function(i) c(test[[i]], vec[i]))
    

    【讨论】:

      猜你喜欢
      • 2021-10-04
      • 2022-07-05
      • 2011-07-02
      • 2021-09-10
      • 2020-06-30
      • 2021-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多