R中的数据类型

时间:2020-02-23 14:43:48  来源:igfitidea点击:

在深入研究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
&gt; 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"