查看原文
其他

用R语言中的sample函数来抽上一次的奖。

果子 果子学生信 2023-06-15

们在上周举办了一个小的抽奖活动,让大家说一说自己的“aha moment”,总共有16位读者参与。

一张神图,解决科研统计80%的问题。

如何抽奖呢,我就用R语言中的sample函数来搞定,因为线下课的时候,我也是用这个函数来点名的。

恭喜读者触手可及获奖,加我微信guotosky,或者直接留言地址,我来包邮寄送。
免责声明:

这是一个别人公司的产品,官网可以查到价格,我跟他们没有利益关系,我自己买过他们的产品检测过。不提供产品使用的帮助,后续检测的结果会在官方APP呈现和解释,跟果子没有任何关系。如果不能接受以上条款,可以告知,我重新抽奖。

接下来我们就讲讲sample这个函数,简单来说,你告诉他从哪抽取,抽多少即可。
比如,从1:10中随机抽取3个数,因为是随机的,每次都不一样。

这是从多的里面抽取少的,没问题,但是要从少的里面抽多的,就会报错,比如,从A,B,C中抽取10个字母


报错了怎么办?不要走,认真看!
读不懂就用 ?来看。

?sample

我们发现他有一个参数叫replace被设置为了FALSE,读一下知道,这个参数允许可放回抽样么,少一点没问题,只要允许我每次抽了放回去就可以。我们把他设置TRUE就可以。

这就是参数的魔力,写得好的函数,有很多参数,用来拓展主函数的功能。
比如为了实现,把1重复1次,2重复2次,3重复3次这种操作,我用过mapply,还专门写过一个荡气回肠的帖子,用11s解决了11个小时的运算。
迷人的多参数批量函数mapply
那个里面我是这样解决的。之后多参数的批量就首先想到mapply,还有一个就是Reduce,这个函数在miRNA数据批量读取的时候会很有用。
巧合的是,这两个函数都跟赵飞有关。

上次上课的时候,不小心读了一下rep这个函数的文档,人家文档里面清楚地写作,我们支持多参数重复。

也就是说他可以方便地实现这个操作

rep(1:10,1:10)

大道至简就是这个感觉哈,基础函数那500行代码应该好好掌握一下。

最后,因为我吹了牛,说rep函数可以生成99乘法口诀表,但是我现在实现不了,当实现不了批量操作的时候,一定要告诉自己,for循环,没问题。
每一个R语言初学者都应该掌握for循环!

for(i in 1:9){
  for(j in 1:i){
    m = j*i
    cat(j,'*',i,'=',m,' ')
  }
  cat('\n')
}

我是果子,我很喜欢在果子学生信写作的感觉,明天见。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存