gpt4 book ai didi

r - 对子列表的指定元素求和

转载 作者:行者123 更新时间:2023-12-04 09:39:07 24 4
gpt4 key购买 nike

想法:

假设我有一个包含两个向量的列表。然后,我想取第一个向量的第一个元素并将其除以它与列表第二个向量的第一个元素的总和。然后对第一个列表的所有元素执行此操作。之后,做同样的事情,但使用列表的第二个向量。

列表的代码:

tau1 <- list(c(0.43742669 , 0.64024429,  0.39660069,  0.11849773), c(0.5060767, 0.4857891, 0.4553237, 0.5045598))

我的工作代码只有两个向量。
 Tau1 <- vector('list', 2)
for(i in seq_along(tau1)){
for(j in 1:length(tau1[[1]])){
Tau1[[i]][[j]] <- tau1[[i]][[j]] / Reduce('+', tau1[[1]][[j]], tau1[[2]][[j]])

}

}

例子:

列表的第一个元素:
TT1 <- tau1[[1]][[1]]/(tau1[[1]][[1]]+tau1[[2]][[1]])
[1] 0.4636196

然后对于列表的第二个元素:
 TT2 <- tau1[[2]][[1]]/(tau1[[1]][[1]]+tau1[[2]][[1]])
[1] 0.5363804

问题:

我想对任意数量的向量这样做。例如,
Reduce('+', tau1[[1]][[j]], tau1[[2]][[j]], tau1[[3]][[j]], tau1[[4]][[j]])
我怎样才能自动做到这一点?有什么帮助吗?

最佳答案

要处理任意数量的列表元素,请使用带有 [[ 的 apply 系列函数.

提取 j每个子列表中的元素使用 sapply(tau1, "[[", j) .总结这些元素使用:sum(sapply(tau1, "[[", j))
PS.: 而不是 for(j in 1:length(tau1[[1]]){}你应该有 for(j in 1:length(tau1[[i]]){} - 以防万一。

关于r - 对子列表的指定元素求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47134179/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com