打算学习一下r语言(windows下载),不知道从什么地方开始学习,加上本人的数理统计基础比较薄弱,所以就漫无目的的从网上找教程。
其实我逛的最多的网站还是知乎,读了好多很好的答案后,我选择了两本书,《153分钟学会r》《r语言实战》。前者大概扫了一眼,不太适合边看书边敲代码(我个人比较喜欢这种),所以后者就比较适合我,这套书还是比较适合菜鸟看的,我还看过《集体智慧编程》,很不错。
下面开始了第一段程序。(博客园没有r语言选项,只好用plain txt了)
age <- c(1,3,5,2,11,9,3,9,12,3) weight <- c(4.4,5.3,7.2,5.2,8.5,7.3,6.0,10.4,10.2,6.1) mean(weight) plot(age,weight) q()
代码很简单,不多说了。
这段代码要注意的地方有:正斜杠,小数点后三位,均匀分布。
setwd("F:/R Code") #如果不存在需要使用dir.create()创建目录 options() options(digits=3) x<-runif(20)
#摘要统计量 summary(x)
#直方图 hist(x) savehistory() save.image() q()
接下来就要讨论r语言的数据结构了
r语言包含了4中数据结构:向量,矩阵,数组和数据框。
1.向量是一维的
a <- c(1,2,5,3,6,-2,4)
2.矩阵是二维的
cells <- c(1,26,24,68) rnames <- c("R1","R2") cnames <- c("C1", "C2") mymatrix <- matrix(cells,nrow=2, ncol=2, byrow=TRUE, dimnames=lilst(rnames,cnames)) #按行填充
3.数组可以是多维的
dim1 <-c("A1","A2") dim2 <- c("B1","B2","B3") dim3 <- c("C1","C2","C3","C4") #array(vector, dimanesions,dimnames) z <- array(1:24, c(2,3,4), dimnames=list(dim1,dim2,dim3))
4.数据框 这个就是大杂烩了
patientID <- c(1,2,3,4) age <- c(25,34,28,52) diabetes <- c("Type1", "Type2", "Type1", "Type1") status <- c("Poor","Improved", "Excellent", "Poor") patientdata <- data.frame(patientID, age, diabetes, status)
取数据框中的某一个元素:patientdata$age,如果不想每一次都输入patientdata$,可以使用attach() detach()或者单独使用函数with()来简化代码。
#概要的统计数据 summary(mtcars$mpg) #作图 plot(mtcars$mpg, mtcars$disp) plot(mtcars$mpg, mtcars$st) #以上代码等同于下面的代码 attach(mtcars) summary(mpg) plot(mpg, disp) plot(mpg, wt) detach(mtcars)
然后使用detach()将数据框从搜索路径中移除。
mpg <- c(25, 36, 47) attach(mtcars) #attention 原始对象用于优先权 plot(mpg, wt) mpg
上面说的是attach,接下来看看with怎么用
with(mtcars, { summary(mpg, disp, wt) plot(mpg, disp) plot(mpg, wt) })
with {} 之间的语句都是针对数据框mtcars的,所以这样就不用担心上面的名字冲突的问题了,而with的最大问题是{}内的操作都是局部的,有点像函数的内部变量,传递不出去,看个例子
with(mtcars, {
stats <- summary(mpg)
stats
})
#下面这句话将产生错误(Error:object \'stats\' not found)
stats
但是这种缺点可以克服吗?使用<<-赋值就可以了。不知道R语言为什么会有这样的设计。
请发表评论