R学习笔记 Note1

主流统计软件

  • SAS–专业昂贵
  • SPSS–大众化为主
  • R–免费开源,统计功能强大
  • Matlab–数学建模
  • Python–程序员

Basic syntax

清屏: option+command+L
赋值:

> x <- rnorm(5)  ###R中赋值不常用=号

也可以反转赋值符号:

> rnorm(5) -> x  ###与上面等价

可以使用函数c()以向量的形式输入月龄和体重数据,此函数可将其参数组合成一个向量或列表。然后用mean()、sd()和cor()函数分别获得体重的均值 和标准差,以及月龄和体重的相关度。最后使用plot()函数,从而用图形展示月龄和体重的关系,这样就可以用可视化的方式检查其中可能存在的趋势。函数q()将结束会话并允许你退出R。

> 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)
[1] 7.06
> sd(weight)
[1] 2.077498
> cor(age,weight)
[1] 0.9075655
> plot(age,weight)
> q()
  • Hint: demo()可以显示出各种示例

R语言编程中的常见错误

有一些错误是R的初学者和经验丰富的R程序员都可能常犯的,如果程序出错了,请检查以下几方面:

  1. 使用了错误的大小写。help()、Help()和HELP()是三个不同的函数(只有第一个是 正确的)。
  2. 忘记使用必要的引号。install.packages(“gclus”)能够正常执行,然而 Install.packages(gclus)将会报错。
  3. 在函数调用时忘记使用括号。例如,要使用help()而非help。即使函数无需参数,仍 需加上()。
  4. 在Windows上,路径名中使用了\。R将反斜杠视为一个转义字符。 setwd(“c:\mydata”)会报错。正确的写法是setwd(“c:/mydata”)或 setwd(“c:\mydata”)。
  5. 使用了一个尚未载入包中的函数。函数order.clusters()包含在包gclus中。如果还 没有载入这个包就使用它,将会报错。

赋值

1.vector
a <- c(1, 2, 5, 3, 6, -2, 4)  
b <- c("one", "two", "three")  
c <- c(TRUE, TRUE, TRUE, FALSE, TRUE, FALSE)

这里,a是数值型向量,b是字符型向量,而c是逻辑型向量

2.Matrix

矩阵是一个二维数组,只是每个元素都拥有相同的模式(数值型、字符型或逻辑型)。可通 过函数matrix()创建矩阵。一般使用格式为:

myymatrix <- matrix(vector, nrow=number_of_rows, ncol=number_of_columns,
 byrow=logical_value, dimnames=list(
char_vector_rownames, char_vector_colnames))

其中vector包含了矩阵的元素,nrow和ncol用以指定行和列的维数,dimnames包含了可选 的、以字符型向量表示的行名和列名。选项byrow则表明矩阵应当按行填充(byrow=TRUE) 还是按列填充(byrow=FALSE),默认情况下按列填充。代码清单2-1中的代码演示了matrix 函数的用法。

>cells <- c(1,26,24,68)
> rnames <- c("R1","R2")
> cnames <- c("C1","C2")

> M1 <- matrix(cells,nrow=2,ncol=2,byrow=TRUE,dimnames=list(rnames,cnames))
> M1
   C1 C2
R1  1 26
R2 24 68
  • 必须注意逻辑判断语句“TRUE”必须大写
M2 <- matrix(cells,2,2,TRUE,list(rnames,cnames))
> M2
   C1 C2
R1  1 26
R2 24 68
  • 熟练以后可以简写

数组

数组(array)与矩阵类似,但是维度可以大于2。数组可通过array函数创建,形式如下:
myarray <- array(vector, dimensions, dimnames)
下表给出了一个创建三维(2x3x4)数值型数组的示例:

> dim1 <- c("A1","A2")  ###命名步骤
> dim2 <- c("B1","B2","B3")
> dim3 <- c("C1","C2","C3","C4")  
z <- array(1:24,c(2,3,4),dimnames=list(dim1, dim2, dim3))  ###数组赋值
> z
, , C1

   B1 B2 B3
A1  1  3  5
A2  2  4  6

, , C2

   B1 B2 B3
A1  7  9 11
A2  8 10 12

, , C3

   B1 B2 B3
A1 13 15 17
A2 14 16 18

, , C4

   B1 B2 B3
A1 19 21 23
A2 20 22 24

从数组中选取元素的方式与矩阵相同。上例中,元素 z[1,2,3]为15。

数据框

数据框可通过函数data.frame()创建:
mydata <- data.frame(col1, col2, col3,...)
其中的列向量col1、col2、col3等可为任何类型(如字符型、数值型或逻辑型)。

> 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
  patientID age diabetes    status
1         1  25    Type1      Poor
2         2  34    Type2  Improved
3         3  28    Type1 Excellent
4         4  52    Type1      Poor

选取数据框元素的方式

  • attach() & with()函数
    函数attach()可将数据框添加到R的搜索路径中。R在遇到一个变量名以后,将检查搜索路 径中的数据框。
summary(mtcars$mpg)
plot(mtcars$mpg, mtcars$disp)
plot(mtcars$mpg, mtcars$wt)

可以用attach写成:

attach(mtcars)
  summary(mpg)
  plot(mpg, disp)
  plot(mpg, wt)
detach(mtcars)

*函数attach()和detach()最好在你分析一个单独的 数据框,并且不太可能有多个同名对象时使用。否则会出现问题。
另一种方式是使用函数with():

 with(mtcars, {
      print(summary(mpg))
      plot(mpg, disp)
      plot(mpg, wt)
})

函数with()的局限性在于,赋值仅在此函数的括号内生效:

> with(mtcars, {
	stats <- summary(mpg)  
	stats
  })
 Min. 1st Qu. Median Mean 3rd Qu. Max.
10.40 15.43 19.20 20.09 22.80 33.90 
> stats
Error: object 'stats' not found

如果你需要创建在with()结构以外存在的对象,使用特殊赋值符<<-替代标准赋值符(<-)
即可,它可将对象保存到with()之外的全局环境中。

因子

函数**factor()**以一个整数向量的形式存储类别值:
举例来说,假设有向量:

diabetes <- c("Type1", "Type2", "Type1", "Type1")

语句diabetes <- factor(diabetes)将此向量存储为(1, 2, 1, 1),并在内部将其关联为 1=Type1和2=Type2(具体赋值根据字母顺序而定)。
针对向量diabetes进行的任何分析都会将其作为名义型变量对待.
要表示有序型变量,需要为函数factor()指定参数ordered=TRUE。给定向量:

status <- c("Poor", "Improved", "Excellent", "Poor")

语句status <- factor(status, ordered=TRUE)会将向量编码为(3, 2, 1, 3),并在内部将这些值关联为1=Excellent、2=Improved以及3=Poor。
另外,针对此向量进行的任何分析都会将 其作为有序型变量对待.

对于字符型向量,因子的水平默认依字母顺序创建。这对于因子status是有意义的,因为 “Excellent”“Improved”“Poor”的排序方式恰好与逻辑顺序相一致。如果“Poor”被编码为 “Ailing”,会有问题,因为顺序将为“Ailing”“Excellent”“Improved”。
可以通过指定levels选项来覆盖默认排序:

status <- factor(status, order=TRUE,
       levels=c("Poor", "Improved", "Excellent"))

各水平的赋值将为1=Poor、2=Improved、3=Excellent

summary()显示连续型变量age的最小值、最大值、均值和各四分位数;并显示类别型变量的频数值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值