《r语言实战》菜鸟学习笔记(一)

打算学习一下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语言为什么会有这样的设计。

原文地址:https://www.cnblogs.com/shyustc/p/4003225.html