我正在使用 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/