我想避免在包含 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/