gpt4 book ai didi

r - 我正在尝试创建一个内部带有 expression() 的函数,但出现错误

转载 作者:行者123 更新时间:2023-12-05 03:16:12 25 4
gpt4 key购买 nike

我想创建这个函数

library(sde)

myfunction <- function(r,a,K,vi){
set.seed(123)
d <- expression(r*x*(K-x))
s <- expression(a*x*(K-x))
sde.sim(X0=1,drift=d, sigma=s,M=3) -> X
plot(X, main="Multiple")
}

但是当我运行函数时:

我的函数(r=0.5,a=0.35,K=100,vi=1)

我明白了

Error in eval(drift) : object 'r' not found

为什么 R 找不到 expression() 中的对象?

我得到了想要的结果,在函数之外并赋值;但我想要一个函数来做到这一点。问题是 R 在函数内部的表达式 () 中找不到值。

r <- 0.5  
a <- 0.35
K <- 20
vi <- 1
set.seed(123)
d <- expression(r*x*(K-x))
s <- expression(ax(K-x))
sde.sim(X0=1,drift=d, sigma=s,M=3) -> X
plot(X, main="Multiple")`

最佳答案

一种解决方法是将bquote.() 一起使用。 bquote 计算包含在 .() 中的表达式:

library(sde)
myfunction <- function(r,a,K,vi){
set.seed(123)
d <- as.expression(bquote(.(r)*x*(.(K)-x)))
s <- as.expression(bquote(.(a)*x*(.(K)-x)))
sde.sim(X0=1,drift=d, sigma=s,M=3) -> X
plot(X, main="Multiple")
}

myfunction(r=0.5,a=0.35,K=100,vi=1)

enter image description here

关于r - 我正在尝试创建一个内部带有 expression() 的函数,但出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74793478/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com