r - R 中的类表达式。其中元素的使用

标签 r expression derivative

我正在使用 Ryacas 包的 deriv 函数。 输出是一个表达式。 我想将表达式的一部分用作函数,以便我可以尝试其值。

这是示例

s <- expression(2*y*x + 2*y -1*x^2-2*y^2);
a<-deriv(s,c("x","y"));

输出为

expression({
    .expr1 <- 2 * y
    .expr10 <- 2 * x
    .value <- .expr1 * x + .expr1 - 1 * x^2 - 2 * y^2
    .grad <- array(0, c(length(.value), 2L), list(NULL, c("x", 
        "y")))
    .grad[, "x"] <- .expr1 - .expr10
    .grad[, "y"] <- .expr10 + 2 - 2 * .expr1
    attr(.value, "gradient") <- .grad
    .value

我想使用.grad[, "x"]。 唯一的方法是将表达式视为列表

a[[1]][6]

但是输出是一个类调用。

(.grad[, "x"] <- .expr1 - .expr10)()

有什么帮助吗?这个想法是获取这个输出并将其转换为函数,这样我就可以向它传递不同的值

谢谢!

最佳答案

deriv 函数返回一个表达式,您可以通过body 函数将其设置为函数体。例如:

     #declare an empty function with the x and y arguments
     myfun<-function(x,y) {}
     #set the body of the function as the object returned by deriv
     body(myfun)<-a
     #call myfun
     myfun(2,3)
     #[1] -4
     #attr(,"gradient")
     #     x  y
     #[1,] 2 -6

关于r - R 中的类表达式。其中元素的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26504528/

相关文章:

python - 如何计算多变量方程的输出

regex - 仅使用 R 捕获 IP 地址

r - R中基于多列的匹配数据框

debugging - Xcode 4 中的表达式窗口在哪里?

r - 通过解析或表达式定义表达式之间的区别

r - 计算 R 中的梯度和 Hessian

r - 打印同表中的关系和相关性的显着性

r - 在 R 中更快地获得随机森林回归

javascript - 将 ’ 替换为 javascript(不是 ' )

fortran - 使用有限差分计算一阶和二阶导数时边界误差较大