R拥有许多用于存储数据的对象类型,包括标量、向量、矩阵、数组、数据框和列表。它们在存储数据的类型、创建方式、结构复杂度,以及用于定位和访问其中个别元素的标记等方面均有所不同。下图是一张R语言数据结构图。
定义:
向量是R语言中最基础,也是最重要的数据类型。
TURE
或者FALSE
数值型向量的创建
c(1,2,3,4,5,6)
## [1] 1 2 3 4 5 6
1:6
## [1] 1 2 3 4 5 6
rep(1,3) # 重复1三次
## [1] 1 1 1
rep(1:3,3) # 重复(1,2,3)三次
## [1] 1 2 3 1 2 3 1 2 3
rep(1:3,each = 3) # 重复1,2,3各三次
## [1] 1 1 1 2 2 2 3 3 3
c(rep(1:3,3),rep(1:3,each = 3)) # 合并向量
## [1] 1 2 3 1 2 3 1 2 3 1 1 1 2 2 2 3 3 3
字符型向量的创建
b = c("one", "two", "three")
b
## [1] "one" "two" "three"
逻辑型向量的创建
c = c(TRUE, TRUE, TRUE, FALSE, TRUE, FALSE)
c
## [1] TRUE TRUE TRUE FALSE TRUE FALSE
a = c("k", "j", "h", "a", "c", "m")
#提取向量a中第二个元素
a[2]
## [1] "j"
#提取向量a中前3个元素
a[c(1,2,3)]
## [1] "k" "j" "h"
#提取向量a中前3个元素
a[1:3]
## [1] "k" "j" "h"
定义:
rnames = c('r1','r2','r3','r4','r5','r6')
cnames = c('c1','c2','c3','c4','c5')
myymatrix <- matrix(1:30,
nrow=6,
ncol=5,
byrow=F, # 默认按列填充
dimnames=list(rnames, cnames)) # 行名和列名
myymatrix
## c1 c2 c3 c4 c5
## r1 1 7 13 19 25
## r2 2 8 14 20 26
## r3 3 9 15 21 27
## r4 4 10 16 22 28
## r5 5 11 17 23 29
## r6 6 12 18 24 30
提取矩阵中第2行
a1 = myymatrix[2,]
a1
## c1 c2 c3 c4 c5
## 2 8 14 20 26
提取矩阵中的1,3,5行
a2 = myymatrix[c(1,3,5),]
a2
## c1 c2 c3 c4 c5
## r1 1 7 13 19 25
## r3 3 9 15 21 27
## r5 5 11 17 23 29
提取矩阵中第2列
b1 = myymatrix[,2]
b1
## r1 r2 r3 r4 r5 r6
## 7 8 9 10 11 12
提取矩阵中的2,4,5列
b2 = myymatrix[,c(2,4,5)]
b2
## c2 c4 c5
## r1 7 19 25
## r2 8 20 26
## r3 9 21 27
## r4 10 22 28
## r5 11 23 29
## r6 12 24 30
提取任意子矩阵
data = myymatrix[1:4,2:4]
data
## c2 c3 c4
## r1 7 13 19
## r2 8 14 20
## r3 9 15 21
## r4 10 16 22
定义:
dim1 = c('A1','A2')
dim2 = c('B1','B2','B3')
dim3 = c('C1','C2','C3','C4')
data = array(1:24,
dim = c(2,3,4),
dimnames = list(dim1,dim2,dim3)) #相当于创建4个2行3列的矩阵
data
## , , 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
定义:
数据框是R中最常见的数据结构之一,一般数据处理都是基于数据框。
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[,c('age','diabetes')]
## age diabetes
## 1 25 Type1
## 2 34 Type2
## 3 28 Type1
## 4 52 Type1
$
符号筛选
patientdata$age
## [1] 25 34 28 52
方法三:
使用attach()
函数和deteach()
函数
attach(mtcars)
plot(mpg, disp)
detach(mtcars)
使用with()
函数,with()
函数使用有一个缺点,with()
函数里面赋值给对象需要用<<-
,不能用<-
或者=
,只有这样才可以将对象保存到全局环境中。
with(mtcars, {
plot(mpg, disp)
})
在我们处理的数据中,通常将数据框中的列(成分)也称为变量
或者属性,而行称为观测或者示例,在R中把数据框的列叫做变量更普遍。变量是统计学中的名词,在数据框中变量既可以是向量,也可以是因子
。变量通常有三种类型,名义型(类别型)、有序型和连续型变量。
变量类型:
名义型变量和有序性变量在R中统称为因子
factor()
函数创建名义型因子
sex = c("male", "female", "male", "female")
sex = factor(sex)
sex
## [1] male female male female
## Levels: female male
class(sex)
## [1] "ordered" "factor"
factor()
函数创建有序型因子
status = c("early", "middle", "late", "late")
status = factor(status,
order=TRUE,
levels=c("early", "middle", "late"))
status
## [1] early middle late late
## Levels: early < middle < late
class(status)
## [1] "ordered" "factor"
有时候需要将因子名称用数字表示,这时候就需要对因子重命名
type = c("Type1","Type1","Type2","Type1","Type2")
type = factor(type,levels = c("Type1","Type2"),labels = c(1,2))
定义:
对象
的有序集合,对象为任何一种数据类型。列表中的对象可以是向量、矩阵、数组、数据框和因子,甚至列表中也可以包含列表。一般使用list()
函数来创建列表
g = "My First List"
h = c(25, 26, 18, 39)
j = matrix(1:10, nrow=5)
k = c("one", "two", "three")
mylist = list(title=g, ages=h, j, k)
mylist
## $title
## [1] "My First List"
##
## $ages
## [1] 25 26 18 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$age
和mylist[[2]]
都表示提取向量h
mylist$age;mylist$age == mylist[[2]]
## [1] 25 26 18 39
## [1] TRUE TRUE TRUE TRUE
函数 | 作用 |
---|---|
length(object) |
显示对象中元素/成分的数量 |
str(object) |
显示某个对象的结构 |
class(object) |
显示某个对象的类型 |
head(object) |
列出某个对象的开始部分 |
tail(object) |
列出某个对象的最后部分 |
ls() |
显示当前的对象列表 |
rm(object, object, ...) |
删除一个或更多个对象。语句rm(list = ls()) 将删除当前工作环境中的几乎所有对象 |
格式 | 含义 | 查看 |
---|---|---|
NA |
缺失值 | is.na() |
NaN |
非数字,如0/0 |
is.nan() |
Inf |
无穷数,如1/0 |
is.infinite() |
NULL |
空数据 | is.null() |
R语言实战(二)
原文:https://www.cnblogs.com/bioprogrammer/p/11668254.html