R语言:数据类型及属性

1.数据类型
R语言可以处理的数据类型主要有6种:数值型、整数型、字符型、复数型、逻辑型和原生型

  • 若输入的数据为一个数字,则数据类型为数值型(numeric),若想数据类型为整数(integer),则需要在所赋值后加“L”。
    通过class()函数可以查看对象类型。
    如:
> x <- 5
> class(x)
[1] "numeric"
> y <- 5L
> class(y)
[1] "integer"
  • 复数(包括虚部和实部,且虚部不为0)的数据类型为复数型,如2+i;
  • 逻辑型数据包括两种:TRUE和FALSE;
  • 原生型数据为字节,很少用到。

2.数据结构
R语言中的数据结构有7种:标量,向量,矩阵,数组,数据框,因子,列表。这7中数据结构中的数据的类型可以是第1节中介绍的数据类型的任意一种或多种(数据框和列表允许多种数据类型)。
在这里插入图片描述

  • 如上图所示,标量、向量、矩阵和数组可以按同一类型来理解,这四种类型要求对象包含的数据均为同一类型,数组是多维度的一串数据,向量是维度为1的数组,标量是单元素的向量,矩阵是维度为2的数组。
  • 数据框是由不同类型的列向量组成的。
  • 数组和数据框均要求每列/行元素长度相同
  • 因子则是带有标签的向量,用来存储分类型数据。
  • 列表则允许任何数据结构的对象作为其元素,可以认为是元素为标量或向量或矩阵或数组或数据框或因子或列表的向量。

对于需要处理的数据可以根据各数据结构的特征选择适合的数据结构:

  • 对于单个数,可以直接赋值给某一变量
  • 对于一组一维单类型数据,若为数值型数据可以选择向量,分类型数据可以选择因子
  • 二维、三维及以上的单类型数据选择矩阵和数组
  • 当有多种类型的数据需要保存到同一对象内时可以选择数据框。

3.数据对象的属性
R语言中数据的范围很广,函数,向量,维数,图像等都可以被称为对象。下面所说的对象均为用来存储数据的对象,不包含函数,图像等。
这里写图片描述
对象有四种属性:名称、维度、类型和长度。

  • 长度为对象中所含的元素个数。
    其中,向量、矩阵、数组、因子的长度即为其所含有的数据个数。
    而数据框和列表略有不同。数据框可以认为是由n个数据类型不同的列向量组成的,因此每一列都是数据框的一个元素,其长度为列的个数;列表是由不同的对象聚集而成的,其包含的每一个对象都是它的一个元素,长度对包含的对象的个数。使用length()可以查看对象的长度。
    例如:
> a <- 1  # 标量a
> length(a)
[1] 1
> b <- c("好", "坏", "好", "坏")  # 向量b
> length(b)
[1] 4
> c <- matrix(1:12, nrow = 3)  # 矩阵c
> length(c)
[1] 12
> d <- array(1:12, c(3,2,2))  # 数组d
> length(d)
[1] 12
> e <- factor(b)  # 将对象b转为因子e
> length(e)
[1] 4
> f <- data.frame(id = c(1,2,3,4),
+                 name = c("a","b","c","d"),
+                 gender = c(TRUE,TRUE,FALSE,FALSE))  # 数据框f
> length(f)
[1] 3
> g <- list(c(1,2,3), b, a)  # 由一个向量、对象b以及对象a组成的列表g
> length(g)
[1] 3
  • 类型即为各数据结构类型,向量的类型即为其所含数据的类型。使用class()查看对象的类型。
    如:
> class(a)
[1] "numeric"
> class(b)
[1] "character"
> class(c)
[1] "matrix"
> class(d)
[1] "array"
> class(e)
[1] "factor"
> class(f)
[1] "data.frame"
> class(g)
[1] "list"
  • 维度属性为对象各维度的长度,对象维度为1时,其维数属性的值为空,列表可以认为是元素特殊的向量,因此也是1维的。使用dim()可以查看。
    如:
> dim(a)
NULL
> dim(b)
NULL
> dim(c)
[1] 3 4
> dim(d)
[1] 3 2 2
> dim(e)
NULL
> dim(f)
[1] 4 3
> dim(g)
NULL
  • 名称,names()可以查看对象的名称,还可以对names赋值以改变名称。

参考:
慕课网: 《R语言基础》
《R in Action》(《R语言实战》)



版权声明:本文为woooooood原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。