作者Wush978 (拒看低质媒体)
看板R_Language
标题Re: [问题] sample中一个每个都抽到
时间Fri Jun 23 15:34:34 2017
逆向思考全垒打
我把问题改一下。
如果我要从1:10中抽20个sample,并且要保证每一个资料都有抽到
我想到两种写法:
# 抽到符合条件为止
x <- sample(10, 20, TRUE)
while(length(unique(x)) != 10) {
x <- sample(10, 20, TRUE)
}
# 先保证1:10, 然後再抽
x <- c(1:10, sample(10, 10, TRUE))
## 如果顺序重要,则要再乱序一次
x <- sample(x, length(x), FALSE)
※ 引述《jas9441314 (jet B)》之铭言:
: [问题类型]:
:
: 程式谘询(我想用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 的版本和套件版本资讯,
: 让版友更容易找出错误
:
: [关键字]:
:
: 选择性,也许未来有用
:
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.109.16.164
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1498203276.A.257.html
1F:推 f496328mm: 推 06/23 17:27
2F:推 wolfxyz: 很棒耶 逼电脑抽到成功为止 06/23 17:47
3F:推 memphis: 我觉得这跟原本的机率设定已经不一样了 06/23 18:03
4F:→ memphis: 说到底还是原po的叙述自相矛盾不清楚 06/23 18:03
5F:→ lin15: 还有个做法是当未抽取数目<未抽到的数目就强制结束 06/23 22:50
6F:→ Wush978: XD 我其实漏看了他的机率设定。但是如果照他的机率设定 06/26 17:34
7F:→ Wush978: 再加上失败重抽,可能就可以了(?) 06/26 17:34
8F:→ Wush978: 这种思维,其实来自於当年学的importance sampling 06/26 17:35