我已经发布了一个非常类似的问题,但情况已经发生变化,我得到的答案对于这些“新特征”无效。
旧帖子:
我想知道是否可能在嵌套列表的不同级别应用函数,rapply递归地在列表中应用函数,但在同一级别上。我的问题是在不同级别上应用具有不同长度的函数。以下是一个例子:
我想应用一个函数,比如
旧帖子:
我想知道是否可能在嵌套列表的不同级别应用函数,rapply递归地在列表中应用函数,但在同一级别上。我的问题是在不同级别上应用具有不同长度的函数。以下是一个例子:
list <- list(list(a=1:5, b=5:9, c=6:10, d=1:5),
list(e=2:6, f=3:7, g=8:12),
list(h=3:7, i=6:10, j=11:15, k=2:6),
list(l=4:8, m=2:6),
list(n=5:9, o=1:5, p=2:6, q=0:4),
list(r=6:10, s=3:7, t=9:13))
我想应用一个函数,比如
sum
,对第一个元素(例如[[1]]$a=1, [[1]]$b=5, [[1]]$c=6, [[1]]d=1
),然后是第二个元素(例如[[1]]$a=2, [[1]]$b=6, [[1]]$c=7, [[1]]$d=2
)以此类推。结果应该类似于这样:[[1]]
13 17 21 25 29
[[2]]
13 16 19 22 25
[[3]]
22 26 30 34 38
[[4]]
6 8 10 12 14
[[5]]
8 12 16 20 24
[[6]]
18 21 24 27 30
也许结合使用 rapply
和 mapply
会更好?
谢谢。
新帖子:
@G.Grothendieck已经为我提供了一个解决方案,但是我有另外一个包含p值的列表,我想应用更复杂的函数,例如mean
或其他函数:
Fisher.test <- function(p) {
Xsq <- -2*sum(log(p))
p.val <- 1-pchisq(Xsq, df = 2*length(p))
return(p.val)
}
Reduce并不像sum
函数或使用f="+"
时那样有效,您有什么建议吗?
以下是这个新列表的示例
pval.list <- list(list(a=c(0.05, 0.0001, 0.32, 0.45), b=c(0.1,0.12,0.01,0.06), c=c(0.1,0.12,0.01,0.06), d=c(0.01,0.02,0.03,0.04)),
list(e=c(0.04, 0.1, 0.232, 0.245), f=c(0.05, 0.01, 0.22, 0.54), g=c(0.005, 0.1, 0.032, 0.045)),
list(h=c(0.03, 0.01, 0.12, 0.4), i=c(0.5, 0.0001, 0.132, 0.045), j=c(0.005, 0.0001, 0.0032, 0.045), k=c(0.5, 0.1, 0.932, 0.545)),
list(l=c(0.022, 0.0012, 0.32, 0.45), m=c(0.0589, 0.0001, 0.0032, 0.0045)),
list(n=c(0.051, 0.01, 0.32, 0.45), o=c(0.05, 0.0001, 0.32, 0.45), p=c(0.05, 0.0001, 0.32, 0.45), q=c(0.05, 0.0001, 0.32, 0.45)),
list(r=c(0.053, 0.001, 0.32, 0.45), s=c(0.05, 0.0001, 0.32, 0.45), t=c(0.05, 0.0001, 0.32, 0.45)))