R中的数据类型
在深入研究R编程之前,了解R中使用的各种数据类型很重要。
R具有以下基本数据类型:
- 字符
- 数字
- 整数
- 逻辑上
- 复杂
除了这些基本类型,R还支持从基本类型构造的几种数据结构。
这些是:
- 向量
- 矩阵
- 数组
- 数据框
- 列表
- 因素
本教程将帮助您了解基本数据类型。
每个复杂数据结构的工作都将在更详尽的教程中介绍。
R中的数值数据类型
由于R主要是为统计目的而设计的语言,因此广泛使用数字和整数数据类型。
我们将从最常用的数字数据类型开始。
顾名思义,数值对应于任何数值。
这些值可以是浮点数,十进制数或者双精度数。
在分配第一个变量之前,请注意,R中的赋值运算符为<-。
小于符号,后跟连字符。
首先为变量a,b和c分配随机数值。
R中的typeof()
函数给出了变量在内部的存储方式,而class()
函数则告诉我们该变量属于哪种数据类型。
R还提供了一些从" is"开始的检查功能。
当对一个变量调用函数is.numeric()时,将返回一个布尔值,表明对象是否为数字数据类型。
其他类别也有各自的功能。
在脚本编辑器中运行以下代码。
将光标放在第一行,然后按Ctrl + Enter执行每一行。
还要观察运行每一行时这些变量如何开始成为环境窗口的一部分。
a <- 3 b <- 5.4 c <- -9.5 typeof(a) typeof(b) typeof(c) is.integer(a) is.numeric(b) is.numeric(c) class(a)
输出:
> a <- 3 > b <- 5.4 > c <- -9.5 > typeof(a) [1] "double" > typeof(b) [1] "double" > typeof(c) [1] "double" > is.integer(a) [1] FALSE > is.numeric(b) [1] TRUE > is.numeric(c) [1] TRUE > class(a) [1] "numeric"
请注意,如何将所有变量都以双精度形式存储在内部存储中,而不管是否使用浮点定义,如typeof()函数所示。
值为3的变量a被存储为3.0,即双精度值。
因此,函数调用is.integer()返回FALSE布尔值。
" class(a)"行提供了变量的数字类型。
R中的数据类型
整数
在没有任何规范的情况下,R编译器会将数值视为数字数据类型。
因此,要定义一个整数变量,必须指定它。
这可以通过使用as.integer()
函数来完成。
a<-as.integer(a) typeof(a) is.integer(a) is.numeric(a)
运行代码的第一行后不久,您看到分配给a的值变成3L,而不是3。
后缀L表示范围为-2 * 10ˆ9到+ 2 * 10ˆ9的长整数。
变量a既是整数又是数字,因为所有整数都是数字,但反之亦然。
输出:
> a<-as.integer(a) > typeof(a) [1] "integer" > is.integer(a) [1] TRUE > is.numeric(a) [1] TRUE
字符
R中的字符数据类型旨在用于字符串和单个字符。
可以通过使用单引号或者双引号对来简单地指定字符,如下所示。
name="theitroad" typeof(name) name2='theitroad2' typeof(name2)
输出:
> name="theitroad" > typeof(name) [1] "character" > name2='theitroad2' > typeof(name2) [1] "character"
可以使用as.character()函数将整数或者数字类型转换为字符。
average=0.558 typeof(average) average=as.character(average) typeof(average)
输出:
> average=0.558 > typeof(average) [1] "double" > average=as.character(average) > typeof(average) [1] "character"
逻辑上
逻辑是用于存储由于逻辑运算而产生的布尔值TRUE和FALSE的数据类型。
上面我们称为is.numeric()
和is.integer()
函数时,我们已经在上面遇到了TRUE和FALSE输出。
让我们使用以下语句对此进行验证。
typeof(is.integer(average))
输出:
> typeof(is.integer(average)) [1] "logical"
同样,逻辑类型的变量可用于所有逻辑运算。
x=TRUE; y=FALSE x&y #Logical AND x|y #Logical OR !x #Logical NOT !y #Logical NOT
输出:
> x=TRUE; y=FALSE > x&y [1] FALSE > x|y [1] TRUE > !x [1] FALSE > !y [1] TRUE
复杂
我们在这里讨论的最终基本数据类型是复杂类型。
这用于表示数学中的复数。
复数的格式为" a + bi",其中a和b是整数。
complex=4+2i typeof(complex)
输出:
> complex=4+2i > typeof(complex) [1] "complex"
如果我们想计算-1的平方根,它在数学上称为i,即虚数的虚数分量,则无法使用常规的sqrt(平方根)函数进行计算。
typeof(sqrt(-1)) #Throws a warning message.
输出:
Warning message: In sqrt(-1) : NaNs produced
通过首先将-1定义为复数,这是可能的。
sqrt(-1+0i) typeof(sqrt(-1+0i))
输出:
> sqrt(-1+0i) [1] 0+1i > typeof(sqrt(-1+0i)) [1] "complex"