今天介绍一些运算函数,它们的使用很简单,没有什么难度,但是也会用的着。
在医学统计学或者流行病学里的现场调查、样本选择经常会提到一个词:随机抽样。随机抽样是为了保证各比较组之间均衡性的一个很重要的方法。那么今天介绍的第一个函数就是用于抽样的函数sample:
> x=1:10
> sample(x=x)
[1] 3 5 9 6 10 7 2 1 8 4
第一行代码表示给x向量赋值1~10,第二行代码表示对x向量进行随机抽样。结果输出为每次抽样抽得的结果,可以看出该抽样为无放回抽样------最多抽n次,n为x向量中元素的个数。
如果想指定在该向量中抽取元素的个数,需要加一个参数size:
> x=1:1000
> sample(x=x,size=20)
[1] 66 891 606 924 871 374 879 573 284 305 914 792 398 497 721 897 324 437
[19] 901 33
这是在1~1000的正整数中抽样,其中size指定抽样的次数,抽了20次,结果如上所示。
这些都是无放回抽样。所谓无放回抽样,也就是说某个元素一旦被选择,该总体中就不会再有该元素。如果是有放回抽样,则需添加一个参数repalce=T:
> x=1:10
> sample(x=x,size=5,replace=T)
[1] 4 7 2 4 8
“replace”就是重复的意思。即可以重复对元素进行抽样,也就是所谓的有放回抽样。我们看上面的结果,元素4在5次随机抽样的过程中被抽取了两次。
![21d2c5f1af59a0ce5600228ad272b6f0.png](https://img-blog.csdnimg.cn/img_convert/21d2c5f1af59a0ce5600228ad272b6f0.png)
R语言代码有一个特性就是“对位性”,也许我的词不专业,但是它的意思就是:如果我们输入代码的位置与某个函数中参数的位置一一对应的话,我们可以不写该函数的参数,如:
> x=1:10
> sample(x,20,T)
[1] 1 2 2 1 5 5 5 9 9 5 2 9 8 3 4 8 8 8 1 1
在上述代码中我们省略了参数x,size和repalce,但是仍然可以运算并且表示对x向量有放回随机抽取20次。我们之所以尽量在每次编写代码时带上参数是因为我觉得这个习惯比较好,而且看起来清楚明白。另外,省略参数的前提是你非常熟悉某个函数参数的位置,否则一旦没有“对位”,那么结果肯定是错误的。而且很多函数有较多的参数,想记住它们的位置是困难的。而如果带上参数,那么即使位置不对应,也一样可以运算:
> x=1:10
> sample(size=20,replace=T,x=x)
[1] 4 9 2 6 4 5 4 7 10 5 2 2 3 4 2 4 6 8 7 8
这种优点显而易见,不仅清楚,而且无需对应。另外我们也可以看出,有放回抽样的话size可以无穷大,而无放回抽样size的大小就取决于总体的容量了。
对于掷骰子,投硬币(这可能是介绍抽样必介绍的内容),都属于有放回抽样。
这里要说明,对于sample函数,参数x可以是数值,也可以是字符,实际上参数x代表任意一个向量:
> a=c("A