R语言的发展历史

Python010

R语言的发展历史,第1张

R是统计领域广泛使用的诞生于1980年左右的S语言的一个分支。可以认为R是S语言的一种实现。而S语言是由AT&T贝尔实验室开发的一种用来进行数据探索、统计分析和作图的解释型语言。最初S语言的实现版本主要是S-PLUS。S-PLUS是一个商业软件,它基于S语言,并由MathSoft公司的统计科学部进一步完善。后来新西兰奥克兰大学的Robert Gentleman和Ross Ihaka及其他志愿人员开发了一个R系统。由“R开发核心团队”负责开发。 R是基于S语言的一个GNU项目,所以也可以当作S语言的一种实现,通常用S语言编写的代码都可以不作修改的在R环境下运行。 R的语法是来自Scheme。R的使用与S-PLUS有很多类似之处,这两种语言有一定的兼容性。S-PLUS的使用手册,只要稍加修改就可作为R的使用手册。所以有人说:R,是S-PLUS的一个“克隆”。

但是请不要忘了:R是免费的(R is free)。R语言源代码托管在github,具体地址可以看参考资料。 。

R语言的下载可以通过cran的镜像来查找,具体地址可以看参考资料。

R语言有域名为.cn的下载地址,有六个,其中两个由Datagurn,由中国科学技术大学提供的。R语言Windows版,其中由两个下载地点是Datagurn和USTC提供的。具体地址可以看参考资料。

q1, R2.15.3中runif的原型是runif(n, min = 0, max = 1),对应生成多少个随机数,均匀分布中的a和b;

关于两个max,第一个max=....是指函数runif中对应的max参数,其值是c(length(p) -0.5, max(p));第二个max是一个运算,其优先级高于runif,在runif之前就完成运算。故不矛盾。

总结一下,这两个max一个是参数名称,一个是函数运算。同理,多个max运算也不矛盾,max分别运算,结果分别保存,然后传递给runif函数。

break的总用是跳出最近的循环,也就是如果满足if的条件就跳出repeat;

q2,我的思路是,不保证对,仅做参考。

如果打41局,一定能分出胜负,如果仅考虑先得21分者胜的话;

二项分布x<-rbinom(41, size = 1, prob = 0.5)  模拟了两个人的比赛情况,0表示a输,1表示a赢。

函数func计算谁先得到21分;由于x中只有0,1,故可在21:41的长度区间内,依次用sum和长度判断1先到凑够21个还是0先凑够21个

func <- function(x){

   for (i in 21:length(x)){

      if (sum(x[1:i]) >= 21) return ('a')

      if (i - sum(x[1:i]) >= 21) return('b')

   }

}

func(x)

funx(x) 计算出谁赢;

在这个基础上,通过重复多次上述过程,代码中500次,可以算出a赢的比例,即概率;

v <- vector(length=500)

for (i in 1:500){

   x<-rbinom(41, size = 1, prob=0.5)

   v[i] <- func(x)

}

length(v[v=='a'])/500

随着重复次数的增加,这个概率最终趋近于0.5,也就是rbinom中的概率;

p.s. lz的题都不错,能否推荐下?

我自从学完R之后,一直也没怎么系统做题,做了几天题也挺有收获,在此也感谢下lz;