r - 为什么意味着不在Reduce中工作?

标签 r

函数有两个例子Reduce()在 Hadley Wickham 的书 Advanced R 中。两者都运行良好。

Reduce(`+`, 1:3) # -> ((1 + 2) + 3)
Reduce(sum, 1:3) # -> sum(sum(1, 2), 3)

但是,当使用 meanReduce() , 它不遵循相同的模式。结果始终是列表的第一个元素。
> 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/

相关文章:

python - R中的规则时间间隔

r - ggplot2 多个 stat_smooth : change color & linetype

r - R 中的温度曲线

sql-server - 在 Mac 上使用 R 连接到 Microsoft SQL Server

r - 使用 doubleYScale 图更改 y 轴文本大小

r - ggplot中每个方面的不同垂直线

r - 计算 `dplyr` 管道中的累积概率(Kaplan-Meier 生存函数)

r - 如何比较两列的值然后根据结果创建第三个/新数据框

带有条件面板和 react 器的 R Shiny 模块

r - ggplot2:使用选定的面和零件数据创建绘图