这两个结果不应该是一样的吗?为什么他们不呢?
integrate(\(x) {x * min(-x+10, 10)},lower = 0, upper = 10)$value
> [1] 1.085709
integrate(\(x) {x * (-x+10)},lower = 0, upper = 10)$value
> [1] 166.6667
请记住,从 x 值 0 到 10,我们永远不应该期望得到高于 10 的 y = -x + 10 值,因此 min(-x+10, 10) 将始终返回 (-x+10 )只要我们在 0 到 10 之间。所以这两个积分应该是相同的。
为什么他们不呢?
问题是
min
只返回一个值,它没有矢量化。创建于 2023-08-21,使用reprex v2.0.2
编辑
如果您不想两次分配相同的名称,第一次创建函数,第二次对其进行向量化,请使用新的管道运算符。
创建于 2023-08-21,使用reprex v2.0.2
@RuiBarradas 的答案有效,但我找到了一种使用以下方法来缓解问题的方法
pmin
:如果有人由于某种原因遇到 min() 未矢量化的其他问题,这可能会解决它。