R语言的数据类型和对象类型



数据类型:一个变量内元素取值的类型。主要包括:数值型、字符型、逻辑型、复数型。

对象类型:R语言组织和管理内部元素的不同方式。主要包括:向量、矩阵、数组、列表、数据框、因子、时间序列。

数据类型我们简单介绍一下。

数值型:取值是实数,在R语言环境中常用数字来表示。

复数型:取值可以扩展到虚数。

逻辑型:取值为TRUE(T)或者FLASE(F)。

字符型:取值是字符串。

#数值型
a<-9.11
mode(a)
#复数型
a<-9.11+9.11i
mode(a)
#字符型
a<-'9.11'
mode(a)
#逻辑型
a<-T
mode(a)


但是要注意有两种情况不能用上述4种数据类型来描述,分别是数据的缺失(NA)和数据的未知状态(NULL)。

NA:占据数据空间,参与运算

NULL:不占据任何数据空间

x<-c(10,20,30,40,NA)
mean(x)
mean(x,na.rm = T)
length(x)
y<-c(10,20,30,40,NULL)
mean(y)
length(y)


怎么去判别NA和NULL呢

is.na:R语言中向量下标的第一个元素为1,若有NA,返回对应的TRUE,否则是FLASE

is.null:在处理向量时不会分别判断内部数据,而是把向量当作一个数据统一判断,其返回值只有一个FLASE。

x<-c(10,20,30,40,NA)
y<-c(10,20,30,40,NULL)
is.na(x)
is.null(y)



下面我们主要阐述R语言中的对象类型。

R语言中使用属性来辅助描述每个对象信息,固有属性:模式(mode)和长度(length)。了解其余属性,可以借助与attributes()和attr()函数

df<-data.frame(a=c(1:10),b=sample(c('F','M'),size=10,replace=T))
attributes(df)#展示列名、行名、数据类型
attr(df,'names')#展示自己想要的结果(列名、行名、数据类型
attr(df,"names")[1]<-'new_name'#重命名列名
attr(df,"row.names")<-LETTERS[1:10]#可以重命名行名
df


向量

向量索引

# 创建向量
x<-1:10
y<-c('F','M','F','M','T','F')
z<-c(T,F,F,F,T)

R语言中利用c()来创建向量,向量内各元素使用逗号分割。这是非常简单的,相信大家都已经掌握的非常熟练了。

那么我们简单回忆一下向量的索引有几种方法?

ToothGrowth#数据集
ToothGrowth[1]#下标索引
ToothGrowth['len']#名字索引
ToothGrowth[,c(T,F,F)]#T/F索引
split(ToothGrowth$len,f = ToothGrowth$supp)#split分割(利用正则表达式)

ToothGrowth[which(names(ToothGrowth)=="len")]#which索引
a<-c(11,12,13,14)
a[which(a>12)]#which返回的是元素下标
a[which.min(a)]
a[which.max(a)]

subset(ToothGrowth,select = 1)#subset索引
subset(ToothGrowth,select = c(T,F,F))
subset(ToothGrowth,select='len')

ToothGrowth[grep(pattern = 'len',x = names(ToothGrowth))]#grep索引

b<-c(11,12,13,14,15,16,17,18,19,20)
c(11,21) %in% b # %in%索引
d<-c(11,21)
match(d,b)#match索引


其实还有很多方式可以帮助我们定位向量中每个元素,读者可以自己思考一下。另外由于篇幅有限,读者可以将上面代码复制后在自己R编译器上运行,这里就不在展示结果了。

向量编辑
a<-c(1:10)
b<-letters[1:10]
a<-c(a,b)# 向量扩展
a


向量中元素的删除

a<-c(1:10)
b<-letters[1:10]
a<-c(a,b)
a[-c(5:9)]#删除多个向量

向量中元素的排序

a<-c(10:1,11:20)
sort(a)
rev(a)
rev(sort(a))


请读者注意区分上述三种排序方式的差异!

向量去重

a<-c(1:10,5:15,10:20)
a
unique(a)
as.numeric(names(table(a)))


向量中缺失值的处理

a<-c(NA,NA,1,5,6,8,7,9)
a[!is.na(a)]
na.omit(a)
na.fail(data.frame(a))#判断数据框中有没有缺失值
na.fail(na.omit(a))


向量大小比较

a<-c(3,7,8,5,4,2,5)
b<-c(4,7,8,9,5,7,5)
c<-c(8,7,5,4,8,5,7)
pmin(a,b,c)
pmax(a,b,c)

pmin:以此比较向量abc对应元素,并把较小的元素组成新的向量。

pmax:则是把较大的元素组成新的向量。


向量的交集、并集、补集

intersect(a,b):返回既属于a,又属于b的元素组成的向量------->交集

union(a,b):把a、b中所有元素组成一个新的向量-------->并集

setdiff(a,b):返回既不属于a,也不属于b的元素组成的新的向量----->补集

a<-c(3,7,8,5,4,2,5)
b<-c(4,7,8,9,5,7,5)
intersect(a,b)
union(a,b)
setdiff(a,b)


  • 6
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值