R语言数据类型、向量、矩阵、列表、数据框

R语言数据类型、向量、矩阵、列表、数据框

R常用数据类型

# 数值型
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))

猜你喜欢

转载自blog.csdn.net/qq_44795788/article/details/127316448