我希望有人可以帮助我理解当您调用mapply
函数和调用sum
函数时mean
函数的行为有何不同。
通过查看这个MWE(部分借鉴https://nsaunders.wordpress.com/2010/08/20/a-brief-introduction-to-apply-in-r/)可能更好地解释我的问题
l1 <- list(a = c(1:10), b = c(11:20))
l2 <- list(c = c(21:30), d = c(31:40))
mapply(sum, l1$a, l1$b, l2$c, l2$d)
[1] 64 68 72 76 80 84 88 92 96 100
上面的代码返回10个值,即每个对象a,b,c和d中相应元素的总和。
以下示例的工作方式不同:
mapply(mean, l1$a, l1$b, l2$c, l2$d)
[1] 1 2 3 4 5 6 7 8 9 10
在后一个例子中,似乎忽略了b,c和d,它只是计算a的每个元素的平均值。
如果有人能帮助我理解这一点,那就太好了。
非常感谢!
答案 0 :(得分:3)
mapply
按预期工作。它从元素列表中总结或表示元素。例如:
l1$a[1] + l1$b[1] + l2$c[1] + l2$d[1]
[1] 64
mean(l1$a[1], l1$b[1], l2$c[1], l2$d[1])
[1] 1
请注意,mean
仅使用第一个参数,因为它只接受x
(请参阅?mean
)。
> mean(l1$a[1])
[1] 1
> mean(l1$a[1], l1$b[1])
[1] 1
您可能想要使用rapply
。
l <- list(l1, l2)
rapply(l, mean)
a b c d
5.5 15.5 25.5 35.5