我想避免在包含 parse() 的函数定义中使用 polynomial()

我的多项式是这样的:

library(polynom)
polynomial(c(1, 2))
# 1 + 2*x

我想创建一个使用此多项式表达式的函数,如下所示:
my.function <- function(x) magic(polynomial(c(1, 2)))

对于 magic() ,我尝试了 expression()formula()eval()as.character() 等的各种组合......但似乎没有任何效果。

我唯一可行的解​​决方案是使用 eval(parse()) :
eval(parse(text = paste0('poly_function <- function(x) ', polynomial(c(1, 2)))))

poly_function(x = 10)
# 21

有没有更好的方法来实现我想要的?我可以避免 eval(parse()) 吗?

最佳答案

似乎您也可以轻松编写自己的函数

poly_function = function(x, p){
    sum(sapply(1:length(p), function(i) p[i]*x^(i-1)))
}
# As 42- mentioned in comment to this answer,
# it appears that p can be either a vector or a polynomial

pol = polynomial(c(1, 2))
poly_function(x = 10, p = pol)
#[1] 21

#OR
poly_function(x = 10, p = c(1,2))
#[1] 21

关于r - 我可以避免 `eval(parse())` 在 R 中用 `polynomial()` 定义函数吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44789564/

10-12 17:32