return向量元素乘积的函数
Function to return function of product of vector elements
对于给定的节点向量,例如,nodes = 1:5
我想要函数 prod_x
到 return 形式为 x 的函数
f(x) = (x−1) * (x−2) * (x−3) * (x−4) * (x−5)
prod_x <- function(nodes){
out <- prod(x - nodes)
return(out)
}
我尝试在下面写下我期望的 reprex
,但它没有按预期工作。
在节点值样本集上测试函数 1:5
NODES <- 1:5
z <- prod_x(nodes = NODES)
#> Error in prod_x(nodes = NODES): object 'x' not found
期望此为 return 函数,但 returns 0 值
z
#> Error in eval(expr, envir, enclos): object 'z' not found
z(0)
应该产生 -120,即本例中的 -factorial(5)。
即z(0) = (0 - 1)*(0 - 2)*(0 - 3)*(0 - 4)*(0 - 5)
z(0)
#> Error in z(0): could not find function "z"
由 reprex package (v2.0.1)
于 2021-11-06 创建
可以看出,上述方法没有按预期工作。任何人都可以解释如何使其以矢量化方式工作吗?
现在您没有返回函数。为了创建新函数,您应该看到 function
关键字。这也是您定义参数的地方。它应该看起来像
prod_x <- function(nodes){
function(x) {
prod(x - nodes)
}
}
这对一个 x
可以很好地工作,但是 prod()
会将 x
的多个值合并为一个结果。如果你想让你的函数在 x
上被矢量化,那么你也可以添加
prod_x <- function(nodes){
Vectorize(function(x) {
prod(x - nodes)
})
}
对于给定的节点向量,例如,nodes = 1:5
我想要函数 prod_x
到 return 形式为 x 的函数
f(x) = (x−1) * (x−2) * (x−3) * (x−4) * (x−5)
prod_x <- function(nodes){
out <- prod(x - nodes)
return(out)
}
我尝试在下面写下我期望的 reprex
,但它没有按预期工作。
在节点值样本集上测试函数 1:5
NODES <- 1:5
z <- prod_x(nodes = NODES)
#> Error in prod_x(nodes = NODES): object 'x' not found
期望此为 return 函数,但 returns 0 值
z
#> Error in eval(expr, envir, enclos): object 'z' not found
z(0)
应该产生 -120,即本例中的 -factorial(5)。
即z(0) = (0 - 1)*(0 - 2)*(0 - 3)*(0 - 4)*(0 - 5)
z(0)
#> Error in z(0): could not find function "z"
由 reprex package (v2.0.1)
于 2021-11-06 创建可以看出,上述方法没有按预期工作。任何人都可以解释如何使其以矢量化方式工作吗?
现在您没有返回函数。为了创建新函数,您应该看到 function
关键字。这也是您定义参数的地方。它应该看起来像
prod_x <- function(nodes){
function(x) {
prod(x - nodes)
}
}
这对一个 x
可以很好地工作,但是 prod()
会将 x
的多个值合并为一个结果。如果你想让你的函数在 x
上被矢量化,那么你也可以添加
prod_x <- function(nodes){
Vectorize(function(x) {
prod(x - nodes)
})
}