[问题类型]:
程式咨询(我想用R 做某件事情,但是我不知道要怎么用R 写出来)
[软件熟悉度]:
请把以下不需要的部份删除
入门(写过其他程式,只是对语法不熟悉)
*[m
[问题叙述]:
我想要从1:368个数字当中 根据每个数字出现的机率p=c(p1,p2,...,p368)抽取1次放回
希望1:368每个数字都能被抽中
然后重复抽10次这样的动作
但是目前抽出来有些情况只会抽出367个数字而非368个
想请问各位大大如何解决 感谢
[程式范例]:
replicate(10,saple(1:368,nrow(data),replace=TRUE,prob=p))
[环境叙述]:
请提供 sessionInfo() 的输出结果,
里面含有所有你使用的作业系统、R 的版本和套件版本资讯,
让版友更容易找出错误
[关键字]:
选择性,也许未来有用
作者:
andrew43 (讨厌有好心推文后删文者)
2017-06-23 01:20:00不懂“希望1:368每个数字都能被抽中”是怎么回事?不是已经给定机率抽出放回,又怎么保证都能被抽中?
作者: inin007 (inin) 2017-06-23 01:58:00
这问题叙述,中文能力要加油
你要放回,又要全部都抽到,不可能,你不要放回才能全部抽到
作者:
cywhale (cywhale)
2017-06-23 10:50:00是说每次抽个1000数字(比如)里面包含1-368,重复10次??
例如1:2你抽两次,抽后放回,那有可能出现两次都抽到 1or 2,数字多那就更容易重复抽到相同的如果你其中一个机率p,小于nrow(data),那抽不到是正常的调整seed有可能全部都抽到,不过这样不太好就是了
sample.base.v = 1:368s_len.v = length(sample.base.v)sample.f = function()sample(c(sample(sample.base.v),sample(sample.base.v,(nrow(data) - s_len.v),replace=TRUE,prob=rep(1/s_len.v, s_len.v))))sample.result.m = replicate(10, sample.f())既然一定要抽到,就不是纯随机的问题,那就先放一个1:368的base,接着再随机抽凑满nrow(data)个数,最后再打乱顺序。
楼上这样的base,可是他有机率问题耶,他是有给定机率的
发文者说明,抽样条件为 抽出每组样本 内 base中所有元素 均 至少大于1个。所以当设定base中任意元素之出现机率<1时,抽样条件就不可能满足。
作者:
lin15 ( )
2017-06-23 22:49:00原po国文要加强...