R语言的数据类型

2020年10月31日15:48:51R语言的数据类型已关闭评论

R语言的数据类型

大家都知道,从变量声明的角度区分,数据类型可以分为静态类型和动态类型。

在编译期间就确定数据类型的语言,叫静态类型语言。该类语言要求在使用任一变量之前必须先声明其数据类型。例如,Java和C就是静态类型语言。

在运行期间才确定数据类型的语言,叫动态类型语言。对于该类语言,不必事先声明其数据类型,而是通过第一次的赋值来定义其数据类型。R和Python为动态类型语言。

从不同数据类型是否可混合使用的角度来区分,语言又可以分为弱类型语言和强类型语言。

在弱类型语言中,不同数据类型间的数据可以混合使用。例如,在VBScript中,可以将字符串'12'和整数3进行连接,从而得到字符串'123'。

在强类型语言中则相反,不同数据类型间的数据不可以混合使用,必须通过类型转化函数处理后才可以。R和Python就是强类型语言。

了解了R语言的数据类型后,再来看看R语言支持的数据类型。通常它支持的数据类型有数值型、字符型、复数型和逻辑型。

数值(numeric)类型的取值是实数,在R环境中使用数字来表示。例如:


a<-9.111
mode(a)
  [1] "numeric"

复数(complex)类型的取值可以扩展到虚数,并使用<实部数值>+i<虚部数值>来表示。例如:


a<-100+11i
mode(a)
  [1] "complex"

逻辑(logical)类型的取值为TRUE(也可以简写为T)和FALSE(也可以简写为F)。例如:


a<-T
mode(a)
  [1] "logical"

字符(character)类型的取值是字符串,在R语言中,字符串需要使用英文双引号括起来表示。例如:


a<-ttt123
错误: 
找不到对象'ttt123'
a<-"ttt123"
mode(a)
    [1] "character"

有两种特殊情况不能使用上述4种数据类型来描述:数据的缺失和数据的未知状态。

NA表示数据集中的某数据遗失。在对具有NA样本的变量进行函数操作时,该NA不会被直接剔除。例如,x<-c(10,20,30,NA,40),取mean(x),则结果为NA。如果函数中有na.rm参数,则可以设置为T,以去除NA的影响。虽然NA表示了数据的遗失,但在工作空间数据中(内存中)是记录该数据的,当使用向量长度读取函数length时,返回的向量长度为5。具体代码及结果如下所示:


x<-c(10,20,30,NA,40)
mean(x)
    [1] NA
mean(x,na.rm=T)
    [1] 25
length(x)
    [1] 5

NULL表示未知的状态。在对具有NULL样本的变量进行函数操作(mean是计算平均数的函数)时,NULL样本不会被计算。而使用print函数输出x数据时,也把NULL忽略了。最能说明NULL与NA不同的是当读取向量的长度时,NULL并不占据任何工作空间,length(c(10,20,30,NULL,40))的返回值为4。而NA是占据工作空间的,length(c(10,20,30,NULL,40))的返回值为5。具体代码及结果如下所示:


x<-c(10,20,30,NULL,40)
mean(x)
    [1] 25
print(x)
    [1] 10 20 30 40
print(paste("x1=",x[1],";x2=",x[2],";x3=",x[3],";x4=",x[4]))
    [1] "x1= 10 ;x2= 20 ;x3= 30 ;x4= 40"
length(x)
    [1] 4

有时要判断一个数据是否为NA或NULL,这时可以使用is.na和is.null函数。例如:


a<-c(1,2,3,NA,4,NULL,9)
is.na(a)
    [1] FALSE FALSE FALSE TRUE FALSE FALSE
is.null(a)
    [1] FALSE

在上面的代码中,is.na函数判断向量a的第四个数据(a[4],R语言中向量下标从1开始)是NA,返回值为TRUE,其余均不是NA,返回值为FALSE。is.null函数判断数据是否为NULL。注意is.na和is.null的区别,is.null在处理向量时不会分别判断内部数据,而是把向量当成一个数据统一判断,其返回值只有一个FALSE。

  • 版权声明:本篇文章(包括图片)来自网络,由程序自动采集,著作权(版权)归原作者所有,如有侵权联系我们删除,联系方式(QQ:452038415)。