【发布时间】:2011-09-19 02:33:19
【问题描述】:
我对 R 很陌生,执行此脚本时遇到问题。嵌套循环输出“数学函数的非数字参数”错误。我不确定嵌套循环中的哪个参数是非数字的?对此的任何帮助将不胜感激。 谢谢。
library(emdbook)
prev<-read.delim("shape.txt", header=T)
shape1<-prev$shape1
shape1<-as.numeric(shape1)
shape2<-prev$shape2
shape1<-as.numeric(shape2)
pvec <- seq(0, 1, length=298)
postvec<-data.frame(posterior=1:298)
dim(postvec)
for (i in 1:length(shape1))
{
for (j in 1:length(shape2))
{
postvec[i]<- dbeta(pvec, shape1= shape1[i], shape2=shape2[j])
}
}
【问题讨论】:
-
你能提供更多关于你想要做什么的背景吗?可以给我们
prev的内容吗?还是它的一个子集?您可以在 R 控制台中输入dput(prev)并将输出复制到问题中,以便我们重新创建您的数据。我敢打赌,有其他方法可以在这里做你想做的事,而无需诉诸双循环。 -
你的内循环是做什么的?据我所知,您的代码将在每个外循环上覆盖
postvec,即您最终将得到一个描述最后一次操作结果的向量(其中i==length(shape1))) -
@Chase 我们正在尝试估计一个比例的 95% 贝叶斯可信区间。例如,我们正在研究青蛙的一种疾病,并假设我们从 10 只青蛙的总样本中检测到 3 只患病动物。我们的比例(或疾病流行率)是 3/10,即 0.3。我们咨询了一位同事,他告诉我们,在这个函数的上下文中,形状 1 = 1-mu,其中 mu = # 患病动物,形状 2 = 1+n-mu,其中 n = 总样本量。因此,对于我们的示例形状 1=1-mu=1-3=-2 和形状 1=1+n-mu=1+10-3=8。这有什么意义吗?
标签: r