【问题标题】:The nested loop is producing this error: Non-numeric argument to mathematical function嵌套循环产生此错误:数学函数的非数字参数
【发布时间】: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


【解决方案1】:
prev<-read.delim("shape.txt", header=T)
shape1<-prev$shape1
shape1<-as.numeric(shape1)
shape2<-prev$shape2
shape1<-as.numeric(shape2)

最后一行应该说:

shape2<-as.numeric(shape2)

?

【讨论】:

  • 啊,是的。谢谢!现在我收到此错误: x[[jj]] [
  • 哎呀在我准备好之前就进入了。我不确定嵌套循环是否是我想要的?谢谢您的帮助。会做更多的研究。
  • 我对 R 或您实际想要达到的目标一无所知,因此很难给出太多建议。但是,嵌套循环通常用于二维类型的任务。所以如果你有一个矩阵,你可能会遍历每一行。然后在每一行中,您将遍历该行中的每个元素。如果您只有 2 个尝试并行处理的数组,只需使用一个循环,并使用一个变量对两个数组进行索引。这是假设您的数组长度相同。如果不是,那么您可能需要 2 个循环,但要一个接一个,而不是一个接一个。
猜你喜欢
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-06
  • 1970-01-01
相关资源
最近更新 更多