其他对象
矩阵
二维向量
矩阵操作更类似于向量,而不是向量的向量或者向量列表
下标可以用用来引用元素,但并不反应矩阵的存储方式
矩阵没有一个确定的属性
数组
具有两个以上维度的向量
数组可用来表示多个维度的同类型数据
数组的底层存储机制是向量
数组也没有确定的类属性
因子
因子型变量表示分类信息
因子型变量通常是一个有序项目的集合
因子型变量可以取得的所有值被称为因子水平
因子型变量的输出结果中各个因子水平没有加引号,且都明确显示出来了
> (eye.colors <- factor(c("brown", "blue", "blue", "green", "brown", "brown", "brown"))) [1] brown blue blue green brown brown brown Levels: blue brown green > class(eye.colors) [1] "factor"
R在输出有序的因子时会显示因子水平的顺序
因子型数据在计算机内部存储为整型数据
因子水平将每个整型数据映射到一个因子水平上
因为整型数据占用的存储空间较少,因此这种方法比字符串向量更节省存储空间
可以将因子型变量转换为整型数组
> (eye.colors.integer.vector <- unclass(eye.colors)) [1] 2 1 1 3 2 2 2 attr(,"levels") [1] "blue" "brown" "green" > class(eye.colors.integer.vector) [1] "integer"
也可蛇形类属性将整型向量重新转换为因子
> (class(eye.colors.integer.vector) <- "factor") [1] "factor" > eye.colors.integer.vector [1] brown blue blue green brown brown brown Levels: blue brown green
(笔记:没懂内部是如何将整数值与因子水平匹配的)
数据框
用于展示表格数据,每列的内容可以分属不同的类型
数据框中的每一行必须具有相同的长度
通常,数据框中的每一列都有列名,有时候行也会有名字
数据框中的列经常被用来表示变量
library(nutshell) data(top.bacon.searching.cities) top.bacon.searching.cities
> top.bacon.searching.cities city rank 1 Seattle 100 2 Washington 96 3 Chicago 94 4 New York 93 5 Portland 93 6 St Louis 92 7 Denver 90 8 Boston 90 9 Minneapolis 89 10 Austin 87 11 Philadelphia 85 12 San Francisco 84 13 Atlanta 82 14 Los Angeles 80 15 Richardson 80
> typeof(top.bacon.searching.cities) [1] "list" > class(top.bacon.searching.cities) [1] "data.frame"
列表中引用元素的方法在数据框总共也能使用
公式类formula
用于描述变量之间的关系
y是x1,x2和x3的函数
> sample.formula <- as.formula(y ~ x1 + x2 + x3) > class(sample.formula) [1] "formula" > typeof(sample.formula) [1] "language"
公式中包含的不同项目的含义
说明 | 栗子 | |
---|---|---|
变量名字 | 表示变量的名字 | |
波浪号~ |
用来连接公式中的响应变量(波浪号左边)和自变量(波浪号右边) | |
加号+ |
用来表示变量之间的线性关系 | |
0 |
当公式中加入0 时,意味着模型中没有截距项 |
y~u+w+v+0 |
竖线| |
用来指定条件变量,常用在lattice绘图公式中 | |
变量保护函数I() |
放在I 内的表达式按照算术意义进行解释 |
a + b :表示变量a和变量b都包含在公式中.I(a + b) :表示(a + b) 这个和应该包含在公式中 |
星号* |
表示变量之间的交互效应 | y~(u + v)* w |
插入符^ |
表示幂 | y~(u + v)^2 等价于y~(u + v)*(u + v) |
变量的函数 | 意味着指定变量的函数应当作为自变量包含在公式中 | y~log(u) + sin(v) + w |