【发布时间】:2018-03-12 20:37:17
【问题描述】:
我编写了一个函数,它接受两个参数,一个介于 0:16 之间的数字和一个包含四个参数值的向量。 如果我改变向量中的参数,函数的输出确实会改变,但如果我改变 0:16 之间的数字,它不会改变。
我可以补充一点,我遇到问题的函数包括另一个函数(称为“pi”),它采用相同的参数。 我已经检查过,如果我从 0:16 更改值,“pi”函数确实会更改值(如果我更改参数的值,它也会更改)。
首先,这是我的代码;
pterm_ny <- function(x, theta){
(1-sum(theta[1:2]))*(theta[4]^(x))*exp((-1)*theta[4])/pi(x, theta)
}
pi <- function(x, theta){
theta[1]*1*(x==0)+theta[2]*(theta[3]^(x))*exp((-1)*(theta[3]))+(1-
sum(theta[1:2]))*(theta[4]^(x))*exp((-1)*(theta[4]))
}
对于 pterm_ny(i,c(0.2,0.2,2,2)) 返回 0.75,对于 i = 0 是 i = 1,...,16 和 0.2634,这告诉我指标函数在 ' pi' 确实有效。
关于将数字提高到一定的幂,有人告诉我应该将希望的数字包裹在“I”中,例如它会像这样;
x^I(2)
我曾尝试在我的代码中这样做,但这也无济于事。 我不记得这样做的理由,但我希望这是为了确保括号中的数字被解释为整数。
我的最终目标是获得 17 个不同的 'pterm' 值并实现这一目标,我正在考虑像这样使用 sapply 函数;
sapply(c(0:16),pterm_ny,theta = c(0.2,0.2,2,2))
我真的希望有人能指出我在这里缺少的东西。
提前谢谢!
【问题讨论】:
-
因为
theta[3]等于theta[4],所以条款取消了。尝试使用这些不相等的值,您确实会为不同的x得到不同的结果。 -
@AndrewGustar 谢谢!这与本的回答相结合,为我做到了!我应该注意到了!