【发布时间】:2017-11-06 09:57:59
【问题描述】:
想法:
假设我有一个包含两个向量的列表。然后,我想取第一个向量的第一个元素并将其除以它和列表的第二个向量的第一个元素的总和。然后对第一个列表的所有元素执行此操作。之后,做同样的事情,但使用列表的第二个向量。
列表代码:
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]])
我怎样才能自动做到这一点?有什么帮助吗?
【问题讨论】:
-
使用
sum(sapply(tau1, "[[", j)),例如Tau1[[i]][[j]] <- tau1[[i]][[j]] / sum(sapply(tau1, "[[", j)) -
你能解释一下
1在这里是什么意思吗? -
编辑了我的评论,检查它是否有效
-
好的。非常感谢。
标签: r