全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1505 5
2012-08-01
请问这个程序哪里有问题啊,为什么会出现“错误于if (u2 <= p[y[i]]/0.12) break :  需要TRUE/FALSE值的地方不可以用缺少值”这样的错误呢



rej.exam4_11=function(n)
{x=rep(0,n)
p=c(0.11,0.12,0.09,0.08,0.12,0.10,0.09,0.09,0.10,0.10)
for(i in 1:n)
  {
   y=numeric(n)
   repeat
        {
          u1=runif(1)
          y[i]=floor(n*u1)+1
          u2=runif(1)
          if(u2<=p[y[i]]/0.12)  break
        }
   x[i]=y[i]
  }
}
rej.exam4_11(15)

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2012-8-1 21:46:55
因为你的p只有10个数,而你的例子里面n=15。如果u1是个很接近1的随机数,y[i]就会比10大,p[y[i]]就是NA了。所以就出错了。

还有一个问题,你的函数没有返回值。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-8-2 09:53:42
qoiqpwqr 发表于 2012-8-1 21:46
因为你的p只有10个数,而你的例子里面n=15。如果u1是个很接近1的随机数,y就会比10大,p[y]就是NA了。所以就 ...
果然是这个问题!谢谢了
函数一定要有返回值么?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-8-2 10:49:27
muting 发表于 2012-8-2 09:53
果然是这个问题!谢谢了
函数一定要有返回值么?
函数不一定非要有返回值。但是你的函数里如果没有返回值,那这个函数的作用是什么?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-8-2 11:53:34
qoiqpwqr 发表于 2012-8-2 10:49
函数不一定非要有返回值。但是你的函数里如果没有返回值,那这个函数的作用是什么?
原来是这样  谢谢哈
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-8-4 18:15:12
又学习了  版主果然很强大
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群