为什么 mapply() 的行为会因调用的函数而异?
Why does mapply() behave differently depending on the function called?
我希望有人能帮助我理解为什么 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
以上代码returns10个值,每个对象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 的每个元素的平均值。
如果有人能帮助我理解这一点,那就太好了。
非常感谢!
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
我希望有人能帮助我理解为什么 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
以上代码returns10个值,每个对象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 的每个元素的平均值。
如果有人能帮助我理解这一点,那就太好了。
非常感谢!
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