gpt4 book ai didi

r - 矢量化 R 函数

转载 作者:行者123 更新时间:2023-12-04 14:52:41 25 4
gpt4 key购买 nike

我必须编写一个向量化的 R 函数 f,它接受一个向量 x= (x_1, . . . , x_m) 和一个自然数 n,并返回由以下给出的值 f_n(x):

enter image description here

例子:

> x = seq(-1, 3, by = 0.4)
> f(x,6) # here n=6

[1] 0.000000e+00 0.000000e+00 0.000000e+00
[4] 2.666667e-06 6.480000e-04 8.333333e-03
[7] 4.430667e-02 1.410800e-01 3.050933e-01
[10] 4.755467e-01 5.500000e-01

这是我得到的:

f = function(x, n){
s = 0
for(j in 0:x)
s = s + (-1)^j*choose(n, j)*(x-j)^(n-1)
s/factorial(n-1)
}

x = seq(-1, 3, by = 0.4)
f(x,6)

Warning in 0:x: numerical expression has 11 elements: only the first used
[1] -8.333333e-03 -6.480000e-04 -2.666667e-06 2.666667e-06 6.480000e-04
[6] 8.333333e-03 4.481867e-02 1.574640e-01 4.294693e-01 9.901147e-01
[11] 2.025000e+00

显然这不是示例中应有的样子。我在这里做错了什么?时间差

编辑:也许使用 outerapply 可能有助于 x

最佳答案

这是一种完全基于 base R 的稍微不同的方法:

x = seq(-1, 3, by = 0.4)
n <- 6

fn <- function(x, n) {
x[x <= 0] <- 0
sapply(x, function(x) {
Reduce(function(a, b) {
a + (-1) ^ b * (factorial(n)/(factorial(b) * factorial(n-b))) * (x - b) ^ (n-1)
}, seq(0, x), init = 0) * (1/factorial(n-1))
})
}

fn(x, 6)

[1] 0.000000e+00 0.000000e+00 0.000000e+00 2.666667e-06 6.480000e-04 8.333333e-03 4.430667e-02
[8] 1.410800e-01 3.050933e-01 4.755467e-01 5.500000e-01

关于r - 矢量化 R 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68799240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com