R语言笔记:快速入门

1.简单会话

> x<-c(1,2,4)

> x

[1] 1 2 4

R语言的标准赋值运算符是<-。也可以用=,不过不建议用它,有些情况会失灵。其中c表示连接(concatenate)

> q<-c(x,x,8)

> q

[1] 1 2 4 1 2 4 8

取q中的某个元素,R下标是从1开始的。

> q[2]

[1] 2

利用现有函数求均值,方差

mean(q)

sd(q)#“#”为注释符号

2.函数入门:

创建一个计算计数个数的函数

> oddcount<-function(x){

k<-0

for(n in x){

if(n%%2 ==1) k<-k+1

}

return(k)

}

调用函数oddcount(c(1,2,3,-1,5))

> oddcount(c(1,2,3,-1,5))

[1] 4

3.R语言中的数据结构

  • 向量

R语言中,把标量或单个数字,作为一个一元向量。很多操作,函数都是针对向量的。

x<-c(5,1,13,2)

> x

[1] 5 1 13 2

length(x)#返回向量x的长度

[1] 4

mode(x)#返回向量的类型

[1] "numeric"

R的一个向量的所有元素都应该属于同一类数据类型,否则R会进行强制转换

> v<-c(4,67,"abc")

> v

[1] "4" "67" "abc"

R允许如下创造空向量,也允许你向任意的下标赋值。

> a<-vector()

> a

logical(0)

> a[3]=1

> a

[1] NA NA 1

> a[10]=32

> a

[1] NA NA 1 NA NA NA NA NA NA 32

  • 字符串

> wq<-c("dasda","dasda","q","12")#生成字符串向量

> wq

[1] "dasda" "dasda" "q" "12"

> mode(wq)

[1] "character"

> u<-paste(\'a\',\'b\',\'c\')#连接字符串

> u

[1] "a b c"

> v<-strsplit(u,"")#拆分字符串

> v

[[1]]

[1] "a" " " "b" " " "c"

>

  • 矩阵

rbind,把两个行向量结合为一个矩阵,(另一个函数式cbind(),把若干个列结合成一个矩阵)。

> m<-rbind(c(1,4),c(2,2))#rbind=row band(按行绑定)

>

> m

[,1] [,2]

[1,] 1 4

[2,] 2 2

矩阵乘法符号 %*%

> m%*%c(1,1)

[,1]

[1,] 5

[2,] 4

提取矩阵的行,列:

> m[,2]#提取矩阵的列

[1] 4 2

> m[1,]#提取矩阵的行

[1] 1 4

  • 列表

与向量不同,列表中各项内容可以属于不同的数据类型。用$访问列表中的元素

> x<-list(u=2,v="ac")

> x

$u

[1] 2

$v

[1] "ac"

> x$u#提取列表中的数据

[1] 2

  • 数据框

一个典型的数据集包含多种不同类型的数据,例如一个员工数据集里有字符串(员工姓名),数字(工资)等。这时候不能用矩阵,因为他混合了多种数据类型,应该用数据框。数据框实际上就列表。

> d<-data.frame(list(kids=c(\'ross\',\'joey\'),ages=c(12,13)))#定义数据框

> d

kids ages

1 ross 12

2 joey 13

> d$ages

[1] 12 13

    R语言是一门面向对象的编程语言,对象是类的实例。数据存储在对象中,在R中,全部都是对象,从简单的数字到函数,或者复杂的数据结构。每一个对象都会属于一个类(class).

    R有许多提前定义好的类和与之相关的函数。我们可以以此为基础创造新的类。

    类需要用在泛型函数中。例如plot()就是一个泛型函数,它和根据参数对象来画出适合的图像(概念有点类似于c++的重载,多态性(polymorphism))

4获取帮助

  • help(plot)#在线获得plot函数的帮助

  • example(plot)#获得plot()函数的例子

  • help.search(\'normal\')#如果不知道搜索什么函数,可以搜索关键字

5一些细节:

  • R语言区分大小写

本人水平有限,怀着分享学习的态度发表此文,欢迎大家批评,交流。感谢您的阅读。

欢迎转载本文,转载时请附上本文地址:http://www.cnblogs.com/Dzhouqi/p/3414088.html

另外:欢迎访问我的博客 http://www.cnblogs.com/Dzhouqi/