文章目录

  • 列表
  • 创建
  • 维度和运算
  • 索引
  • 转化
  • 组合列表
  • 数据框
  • 创建
  • 索引
  • 基本数据框操作


列表

列表是一个向量,其每个元素的类型可以不同,可以是向量、矩阵或函数等。

创建

  1. list函数用于创建列表,各元素之间使用逗号分隔。
  2. 可以在创建的时候对各元素命名,也可以在创建后使用names函数进行命名

维度和运算

  1. 列表没有维度,故不能对其应用dim函数。列表的长度(length函数)即为顶层元素个数。
  2. 因列表允许元素类型不同,故通常算术运算(双目运算)对列表不起作用,除非参与运算的两个列表的元素类型相同。 列表支持对其中每一元素进行算术运算或其他操作。

索引

  1. 顶层元素索引(返回的是一个列表。):与向量类似,使用[]和正或负的下标数字、元素名称或逻辑索引。
  2. 列表元素内容索引

使用双方括号[[]]传入正整数或指定该元素的名称的字符串

对于列表中的 命名元素(前提) ,可使用美元符号运算符$。此方法与使用双方括号并传入命名字符串作用一样,但是 IDE可自动补全,且支持部分匹配的元素名称,更方便。

r语言长数据转成宽数据 r语言列表的长度_R

转化

可使用as.list将其他类型转化为列表,但是因列表元素类型可以不同,故一般不把列表转化为其他类型。

组合列表

c函数可用于列表的拼接,cbind和rbind 也可用于列表的拼接,但不建议用


数据框

数据框类似一个电子表格,每列可以存储不同类型的数据,每列数据类型必须相同,每列具有相同数目的元素。

创建

data.frame用于创建数据框。
行命名:

  1. 输入的向量都没有名称时,每行从1开始自动编号。
  2. 若有名称,行向量取自第一个向量的名称。
  3. 若不想按2对行进行命名,可向data.frame传入参数row.names=NULL,则会从1开始自动编号。
  4. 若想对行向量自己命名,可通过row.names传入行向量名称。

注:

  1. 可用于矩阵的函数也可用于数据框,如rownames返回行名等(row.names/colnames/col.names/nrow/dim等)
  2. length返回与ncol相同,names返回与colnames相同,因此对于数据框最好使用ncol和colnames
  3. 使用长度不同的向量从创建数据框,只要长度较短的向量能够刚好循环至总长度也可,即要求所有向量长度的最小公倍数必须与最长向量相等。

r语言长数据转成宽数据 r语言列表的长度_数据_02

索引

  1. 规则与矩阵相同,返回是一个数据框,如果只取某一列,则返回为向量。
  2. subset(<数据框名>,<条件逻辑向量>,<要保留的名字向量>)
    subset根据输入的<数据框名>,按照<条件逻辑向量>进行筛选,并返回满足条件的<要保留的名字向量>对应的列。下图两种方法意义相同

r语言长数据转成宽数据 r语言列表的长度_R_03

基本数据框操作

  1. t函数可将数据框转置,同时将所有元素转化为同一类型,并输出为矩阵。
  2. cbind/rbind实现数据框的拼接,但是cbind不会对列名进行查重复性检查。当存在相同的列时,使用merge函数进行合并。merge会使用两个数据框中共同的列,或者通过by参数指定共用的列。
  3. colSums/colMeans/rowSums/rowMeans可用于计算每列和、均值;每行和、均值

注:

  1. 列表可以将其他列表包含在内,因此列表被称为递归变量,向量矩阵数组则被称为原子变量。is.recursiveis.atomic分别用于检查一个变量是递归变量还是原子变量。
  2. NULL是一个空的变量,若某个元素必须存在但没有赋值,可以将NULL赋值给它。
    a. NULL是一个变量,长度为零,不占用内存空间。NA是一个标量,长度为1。
    b. 缺失值不是NULL。检查是否为NULL,使用is.null
    c. 将已存在的元素赋值为NULL,可将其删除。删除列表中的元素,需要使用list(NULL)