R语言的基本对象
来源:互联网 发布:路由协议各协议端口号 编辑:程序博客网 时间:2024/05/07 20:55
1.R语言的向量对象
向量是用于存储数值型、字符型或逻辑型数据的一维数组。
R语言中建立一个向量的函数是c(),
例如:
c(1,2,3,4),结果是[1] 1 2 3 4
此外,也可以用c()函数建立字符向量,
例如:
c(“hello”, “world!”),结果是[1] “hello” “world!”
如果传递给c()的参数既有数值又有字符串,则c()会默认将数值转化成字符串,例如:c(1.5, ‘a’),结果是[1] “1.5” “a”
使用str()函数察看结果的类型,也表明结果是字符串类型的向量:
str(c(1.5,’a’))
chr [1:2] “1.5” “a”
由此我们可以知道:同一个向量中无法混杂不同格式的数据。
tip:建议不要使用R的内置函数名,如c作为变量,以避免混淆
除了c函数,我们也可以使用冒号:创建一个规则的向量,
比如:
创建1:6的向量,增量为1
1:6
[1] 1 2 3 4 5 66:1
[1] 6 5 4 3 2 1
R语言中,可以用等号或者箭头给变量赋值:
a=c(1,2,3)
a
[1] 1 2 3b<-c(1,2,3)
b
[1] 1 2 3
也可以
c(1,2,3)->b
b
[1] 1 2 3
tip:rstudio中可以用快捷键alt+- 键入箭头符号
注意:R允许使用=为对象赋值。但是这样写的R程序并不多,因为它不是标准语法,某些情况下,用等号赋值会出现问题,R程序员可能会因此取笑你。你还可以反转赋值方向。例如,rnorm(5) -> x与上面的语句等价。
向量的四则运算
向量之间可以直接进行加减乘除运算:
如:
c(1,2,3,4)+c(5,6,7,8)
[1] 6 8 10 12c(1,2,3,4)-c(5,6,7,8)
[1] -4 -4 -4 -4c(1,2,3,4)*c(5,6,7,8)
[1] 5 12 21 32
如果是两个长度不同的向量相加,则会将短的向量重复若干次,比如下面这个例子中,后一个向量重复了一次:
c(1,2,3,4)+c(5,6)
[1] 6 8 8 10
进行不同长度向量加/减法,最好长向量的长度必须是短向量长度的整数倍,否则会出现警告:
c(1,2,3,4)+c(5,6,7)
[1] 6 8 10 9
警告信息:
In c(1, 2, 3, 4) + c(5, 6, 7) : 长的对象长度不是短的对象长度的整倍数
向量的比较
除了四则运算外,我们还可以比较两个向量的大小,产生的结果是个逻辑向量:
c(2,3,4,5)>c(1,4,5,3)
[1] TRUE FALSE FALSE TRUE
向量元素的访问
R语言中采用方括号中的数字来访问向量中一个特定位置的元素。值得注意的是,R语言与传统编程语言如C、Java不同,其数组元素是从位置1开始的。
a <- c(1,2,3,4)
a[1]
[1] 1
当然,如果我们不需要某个元素还可以这样:
a[-2]
[1] 1 3 4
第二个元素就被丢掉了,如果想丢掉多个,可以这样:
a[c(-1,-3)]
[1] 2 4
这样,第一个和第三个元素都被丢掉了。
2.R语言的矩阵对象
矩阵是一个二维数组,每个元素都拥有相同数据类型。R中使用matrix函数创建一个矩阵
matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL)
参数中,data是矩阵的元素,nrow是行数,ncol是列数,byrow指定按行填充(TRUE)还是按列填充(FALSE),默认按列填充,dimnames指定每一维的名字。
例1:
m1 <- matrix(1:20,nrow=5,ncol=4) #创建5x4的矩阵,按列填充
m1
[,1] [,2] [,3] [,4]
[1,] 1 6 11 16
[2,] 2 7 12 17
[3,] 3 8 13 18
[4,] 4 9 14 19
[5,] 5 10 15 20
例2:
cell <- c(1,2,3,4)
rnames <- c(“R1”, “R2”) #行名为”R1”, “R2”
cnames <- c(“C1”, “C2”) #列名为”C1”, “C2”
m2 <- matrix(cell, nrow=2, ncol=2, byrow=TRUE, dimnames=list(rnames, cnames)) #2x2,按行填充m2
C1 C2
R1 1 2
R2 3 4
R语言中可以使用方括号+下标来选择矩阵中的行、列或元素。
如:
m1[1,] #m1矩阵的第一行
[1] 1 6 11 16m1[,1] #m1矩阵的第一列
[1] 1 2 3 4 5
这样做返回的结果是一个向量,有时我们不想丢掉矩阵的格式,那么我们可以加上drop=F选项来保持返回结果的格式:
m1[,1,drop=F]
[,1]
[1,] 1
[2,] 2
[3,] 3
[4,] 4
[5,] 5m1[3,4] #m1第3行,第4列元素
[1] 18
当然,也可以同时选择多行或者多列
m1[,c(2,3)] #同时选择第2列和第3列
[,1] [,2]
[1,] 6 11
[2,] 7 12
[3,] 8 13
[4,] 9 14
[5,] 10 15
使用dim函数可以很方便地查询矩阵的维度:
dim(m1)
[1] 5 4
3.R语言的数组对象
数组与矩阵类似,但是维度可以大于2。数组由array()函数创建,形式如下:
array(data = NA, dim = length(data), dimnames = NULL)
其中data包含了数组中的数据,dim是一个数值型向量,给出各个维度下标的最大值,而dimnames是可选的、各个维度名称的标签的列表。
例子:
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] #A1,B2,C3
[1] 15
4.R语言的数据框对象
数据框中不同的列可以包含不同模式的数据,较矩阵来说更为一般。它与SAS,SPSS和Stata中看到的数据集类似。数据框是R中最常处理的数据结构。数据框可以用data.frame()创建:
mydata<-data.frame(col1, col2, …)
其中的列向量col1,2,…可以为任何类型。每一列的名称可由函数names指定。
例:
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
•选取数据框中的数据patientData[1:2] #选择数据框的前2列
patientID age
1 1 25
2 2 34
3 3 28
4 4 52
也可以用变量名来选择数据,如:
patientData[c(“diabetes”, “status”)]
diabetes status
1 Type1 Poor
2 Type2 Improved
3 Type1 Excellent
4 Type1 Poor
此外,还可以用记号$来选择数据框中的特定变量,例如你想知道糖尿病类型变量diabetes和病情变量status的列联表,可以使用以下代码:
table(patientData
diabetes,patientData status)
Excellent Improved Poor
Type1 1 0 2
Type2 0 1 0
每次引用变量名都必须键入一次patientData显得很麻烦,可以使用函数attach()和detach()或单独使用函数with()来简化代码。
函数attach()可以将数据框添加到R的搜索路径中,R在遇到一个变量名后,将检查搜索路径中的数据框。
使用attach函数将数据框patientData加入搜索路径:
attach(patientData)
The following object(s) are masked by ‘.GlobalEnv’:age, diabetes, patientID, status
接着就可以直接引用patientData的变量了:
age
[1] 25 34 28 52
diabetes
[1] “Type1” “Type2” “Type1” “Type1”
patientID
[1] 1 2 3 4
status
[1] “Poor” “Improved” “Excellent” “Poor”
注意:当我们环境中已经有与数据框中某个变量同名的变量时,原始变量将取得优先权。任何情况下都要当心那些告知某个对象已被屏蔽的警告。
5.R语言中的列表对象
列表是R的数据类型中最为复杂的一种,它是一些对象的有序集合。可以使用list()创建列表:
mylist <- list(object1, object2,…)
其中的对象可以是上面提到的任何结构。还可以为列表中的对象命名:
mylist <- list(name1=object1, name2=object2,…)
例:
g <- “my first list”
h <- c(25,26,15,39)
j <- matrix(1:10, nrow=5)
k <- c(“one”, “two”, “three”)
mylist <- list(title=g, ages=h, j, k)
mylist
title
[1]”myfirstlist”
ages
[1]25 26 15 39
[[3]]
[,1] [,2]
[1,] 1 6
[2,] 2 7
[3,] 3 8
[4,] 4 9
[5,] 5 10
[[4]]
[1] “one” “two” “three”
mylist[[2]] #输出第二个成分
[1] 25 26 15 39
或:
mylist[[“ages”]]
[1] 25 26 15 39
由于两个原因,列表成为R中的重要数据结构。首先,列表允许以一种简单的方式组织和重新调用不相干的信息。其次,许多R函数的运行结果都是以列表的形式返回的。需要取出其中哪些成分由分析人员决定。
tip:R不提供多行注释或块注释的功能。你必须以#作为多行注释每行的开始。处于调试目的,你也可以把想让解释器忽略的代码放到语句if(FALSE){…}中。将FALSE改为TRUE即允许这快代码运行。
其他的一些注意事项:
•对象名称中的句点(.)没有特殊意义。但美元符号()却有着其他语言中句点类似的含义,即指定一个对象中的某些部分。例如,A
•将一个值赋给某个向量、矩阵、数组或列表中一个不存在的元素时,R将自动扩展这个数据结构以容纳新值。
比如:
x <- c(1,2,3)
x[8] <- 10
x
[1] 1 2 3 NA NA NA NA 10
•R中没有标量。标量以单元素向量的形式出现
•R中的下标不以0开始,而从1开始。
•变量无法被声明。它们在首次赋值时生成。
- R语言的基本对象
- R语言的基本操作
- R语言的基本统计分析
- R语言入门 一些基本的操作
- R语言数据统计分析的基本函数
- R语言系列:数据的基本运算
- R语言系列:数据的基本运算
- R语言作图的基本用法
- R语言中基本图形的绘制
- R语言对数据的基本管理
- R语言-变量的基本操作
- R语言系列:数据的基本运算
- R语言基本语法
- R语言基本操作
- R语言基本画图
- R语言基本数据管理
- R语言基本语句
- R语言基本教程
- Java多态
- angularjs指令 添加CSS样式
- 基础篇:线程异常处理器与join方法(三)
- matlab将多个excel读取并存到一个excel的不同sheet中
- PyQt5+Eric6+Anaconda+Pycharm 开发Qt应用环境搭建
- R语言的基本对象
- CSS3 transform对普通元素的N多渲染影响
- python 安装memcache模块
- 大学毕业要完成的事
- apache防恶意刷新网站和DDOS攻击的技巧
- 论文引介 | Learning Graphical State Transitions
- Java抽象类
- ImportError: No module named thrift
- VNC+xfce4 远程桌面及公网访问