函数有两个例子Reduce()
在 Hadley Wickham 的书 Advanced R 中。两者都运行良好。
Reduce(`+`, 1:3) # -> ((1 + 2) + 3)
Reduce(sum, 1:3) # -> sum(sum(1, 2), 3)
但是,当使用
mean
在 Reduce()
, 它不遵循相同的模式。结果始终是列表的第一个元素。> Reduce(mean, 1:3)
[1] 1
> Reduce(mean, 4:2)
[1] 4
两个函数
sum()
和 mean()
非常相似。为什么使用 Reduce()
可以正常工作,但另一个没有?我如何知道函数在 Reduce()
中是否正常运行在它给出不正确的结果之前?
最佳答案
这与 sum
不同的事实有关。或 +
, mean
需要一个参数(re:值的向量),因此不能以 Reduce
的方式应用操作,即:
Reduce uses a binary function to successively combine the elements of a given vector and a possibly given initial value.
记下
mean
的签名:mean(x, ...)
当您向其传递多个值时,该函数将匹配
x
到第一个值并忽略其余部分。例如,当您调用 Reduce(mean, 1:3)
,这或多或少是发生了什么:mean(1, 2)
#[1] 1
mean(mean(1, 2), 3)
#[1] 1
将此与
sum
的行为进行比较,它接受可变数量的值:sum(1, 2)
#[1] 3
sum(sum(1, 2), 3)
#[1] 6
关于r - 为什么意味着不在Reduce中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35580295/