# 数值型
123
2.34
# 字符型
"Hello, World."
'123'
# 逻辑型
TRUE
T
FALSE
F
# 判断
is.numeric(123)
is.numeric(FALSE)
is.character('123')
is.character(FALSE)
is.logical('123')
is.logical(FALSE)
# 转换
as.numeric('123')
as.numeric('转换')
as.numeric(T)
as.numeric(F)
as.character(123)
as.logical("Hello, World.")
as.logical(2)
as.logical(1)
as.logical(-2)
as.logical(2.1)
as.logical(0)
# 特殊值
NA #表示缺失值,是“Not Available”的缩写
is.na(NA)
NULL #表示空值,即没有内容
is.null(NULL)
NaN #表示非数值,是“Not a Number”的缩写,有些运算会导致结果为非数值,在R中用NaN来表示
is.nan(NaN)
Inf #表示无穷大,是“Infinite”的缩写
-Inf
is.infinite(-Inf)
# 示例
2/0
-2/0
0/0
R常用数据结构
# 赋值
# 对象名 <- 对象值
# 快捷键 alt + -
#赋值一般用<-,不用=
# 向量
# 常量
pi #表示圆周率
letters #表示小写的英文字母
LETTERS #表示大写的英文字母
month.name #完整月份名称
month.abb #缩写月份名称
v1 <- 1:5
v2 <- c(3,2,7,4,6)
#rep是重复序列函数,
v3 <- rep(v2, times = 2) #所有元素循环2次
v4 <- rep(v2, each = 2) #每个元素重复2次
v5 <- rep(v2, times = 2, each = 2) #每个元素重复2次,所有元素循环2次
# seq()函数是产生等距间隔数列的函数
v6 <- seq(from = 2, to = 9, by = 3)
v7 <- seq(from = 2, to = 9, length.out = 3)
v8 <- seq(from = 2, by = 3, length.out = 4)
名称 | 取值及意义 |
---|---|
from | 数值,表示等间隔数列开始的位置,默认值为1 |
to | 数值,表示等间隔数列结束的位置,默认值为1 |
by | 数值,表示等间隔数列之间的间隔 |
length.out | 数值,表示等间隔数列的长度 |
along.out | 向量,表示产生的等间隔数列与向量具有相同的长度 |
c()为连接函数,把单个标量连成向量.
v9 <- c('aic', 'bic', 'cp')
rep(v9, each = 3)
c(T,T, F,T)
# 强制转换为同一种类型的数据
c(T, "aic")
# 向量元素名称
names(v2)
names(v2) <- v9
v2
# 向量长度
length(v9)
# 向量索引,R语言中从1开始
v8[3]
#提取多个元素,用c函数连接
v8[c(1, 3, 5)]
#排除某个元素
v8[-c(1, 4)]
v2[c('aic', 'cp')]
v1[v1%%2==1]
矩阵
# 矩阵
m1 <- matrix(
1:6,
nrow = 2,
# ncol = 3,
byrow = F, #元素的排列方式(按行或者按列)
dimnames = list(c('r1', 'r2'),
c('c1', 'c2', 'c3'))
# dimnames确定矩阵行列的名称
)
m1
#容器:方便后面填充
# matrix(NA, ncol = 3, nrow = 3)
m2 <- matrix(
c(1:6,letters[1:6]),
nrow = 3,
byrow = F,
dimnames = list(c('r1', 'r2', 'r3'),
c('c1', 'c2', 'c3', 'c4'))
)
m2
# 行列名称
colnames(m1)
rownames(m1)
dimnames(m2)->list(c ) #使用dimnames函数指定每个维度的名称
# 维度信息
dim(m1)
ncol(m1)
nrow(m1)
# 矩阵索引:逗号前为行,后为列
m2[1,2] # 返回向量,返回值
m2[1,] # 返回向量,返回第一行的数值
m2[,2] # 返回向量,返回第二列的数值
m2[1:2,2:3] # 返回矩阵,返回多行多列
m2[c(1,3), c(2,4)]
m1['r1',] # 返回向量,返回r1这一行
m1[,'c1'] # 返回向量,返回r1这一列
m1[c('r1','r2'), c('c2','c3')] # 返回矩阵
# 转换成向量
as.vector() #矩阵转换成向量的方式
# 数组
# array() #可以是多维
列表
# 列表可以是不同类型的数据,也可以是不同结构的数据。
v1 <- 1:5 #向量
m1 <- matrix(
1:6,
nrow = 2,
# ncol = 3,
byrow = F,
dimnames = list(c('r1', 'r2'),
c('c1', 'c2', 'c3'))
) #矩阵
l1 <- list(com1 = v1,
com2 = m1)
l1
# 长度信息
length(l1)
# 各个组成成分的名称
names(l1)
# 列表索引
l1$com1 # 返回向量,返回组成成分具体的数据结构类型(数值)
l1[['com2']] # 返回矩阵
l1[[2]] # 返回矩阵,2是未知的索引
l1['com1'] # 返回列表
l1[2] # 返回列表
# 新建成分
l1$com3 <- 3:6
l1
# 释放列表
unlist()
数据框
# 数据框(特殊的列表)
df1
# 维度信息
dim(df1)
ncol(df1)
nrow(df1)
# 行列名称
dimnames(df1)
names(df1) #返回列名称
colnames(df1) #返回列名称
rownames(df1) #返回行名称
# 数据框索引
df1[1:2, 2] # 返回向量
df1[, 2] # 返回向量
df1[1, ] # 返回数据框
df1[, "c1"] # 返回向量
df1['1',] # 返回数据框
df1[[2]] # 返回向量
df1$c1 # 返回向量
df1[2] # 返回数据框
df1['c1'] # 返回数据框
# 新建列
df1$c3 <- 1:4
df1
# 生成用于网格搜索的数据框
expand.grid(mtry = 2:5,
ntree = c(200, 500))