函数不改变值 (R)
Function doesn't change value (R)
我编写了一个带有两个参数的函数,一个介于 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]))
}
returns 0.75 对于 pterm_ny(i,c(0.2,0.2,2,2)),i = 1,...,16 和 0.2634 对于 i = 0,这告诉我 'pi' 中的指标函数部分确实有效。
关于将数字提升到某个次方,我被告知应该将希望的数字包裹在 'I' 中,例如它会像;
x^I(2)
我曾尝试在我的代码中这样做,但这也无济于事。
我不记得这样做的理由,但我希望这是为了确保括号中的数字被解释为整数。
我的最终目标是获得 'pterm' 的 17 个不同值,为了实现这一点,我正在考虑像这样使用 sapply 函数;
sapply(c(0:16),pterm_ny,theta = c(0.2,0.2,2,2))
我真的希望有人能指出我在这里遗漏了什么。
提前谢谢!
您的主表达式和 pi()
函数中都有一个 theta[4]^x
项;这些正在抵消,使结果不变 x
...
还有:
- 您可能希望避免使用
pi
作为您的函数名称,因为它也是一个内置变量 (3.14159...) - 这有时会引起混淆
- 有关使用 "as is" 函数
I()
保护权力的建议仅在公式中相关,例如在 lm()
中使用(线性回归)。 (它将用作 I(x^2)
,而不是 x^I(2)
我编写了一个带有两个参数的函数,一个介于 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]))
}
returns 0.75 对于 pterm_ny(i,c(0.2,0.2,2,2)),i = 1,...,16 和 0.2634 对于 i = 0,这告诉我 'pi' 中的指标函数部分确实有效。
关于将数字提升到某个次方,我被告知应该将希望的数字包裹在 'I' 中,例如它会像;
x^I(2)
我曾尝试在我的代码中这样做,但这也无济于事。 我不记得这样做的理由,但我希望这是为了确保括号中的数字被解释为整数。
我的最终目标是获得 'pterm' 的 17 个不同值,为了实现这一点,我正在考虑像这样使用 sapply 函数;
sapply(c(0:16),pterm_ny,theta = c(0.2,0.2,2,2))
我真的希望有人能指出我在这里遗漏了什么。
提前谢谢!
您的主表达式和 pi()
函数中都有一个 theta[4]^x
项;这些正在抵消,使结果不变 x
...
还有:
- 您可能希望避免使用
pi
作为您的函数名称,因为它也是一个内置变量 (3.14159...) - 这有时会引起混淆 - 有关使用 "as is" 函数
I()
保护权力的建议仅在公式中相关,例如在lm()
中使用(线性回归)。 (它将用作I(x^2)
,而不是x^I(2)