统计软件 R 语言学习笔记 (2) R 语言初步:常见对象和数据的输入输出
R 语言入门 (1)
代码和笔记存储在 GitHub 库 【持续更新中,建议 star!】
1 常见对象
1.1 向量 vector
最简单的数据结构就是由一串相同类型的元素等构成的向量 vector
- 标量为长度是
1
的向量
1.1.1 c()
函数
1 | x <- c(0.3, 0.6) |
【注意】R 语言只有
TRUE
和T
以及FALSE
和F
1.1.2 rep()
函数
格式
1 | rep(x, times = 1, length.out = NA, each = 1) |
先执行
each
复制单个元素,后执行times
复制整个向量
1 | rep(1:4, 2) # times = 2 |
【注意】
each = x
等价于times = c(x, x, ...)
1.1.3 seq()
函数
格式
1 | seq(from = 0, to = 1, by = ((to - from) / (length.out - 1)), length.out = NULL, ...) |
例如:
1 | seq(0, 1, length.out = 11) |

1.2 矩阵 matrix
R 语言的矩阵是
-
有维度(dimension)属性的向量
-
所有元素属于相同类型
1.2.1 matrix()
函数
格式
1 | matrix(NA, nrow = 1, ncol = 1, byrow = FALSE) |
例如:
1 | matrix(1:6, nrow = 2, ncol = 3) |

1.2.2 cbind()
rbind()
函数
将向量按行/列组合成矩阵
1 | x <- c(1, 2, 3) |

1.3 数据框 data frame
-
矩阵
Matrix
中只能是同一种类型的元素,一般是数值型 -
数据框
Data Frame
不同列可以是不同数据类型
1 | age <- c(1, 3, 5, 2, 11, 9, 3, 9, 12, 3) |

dim
nrow
ncol
函数也可用于矩阵matrix
类型
1.4 列表 list
List
是一个广义的 “向量”- 每个位置上是任意的R对象,甚至是一个列表
1 | x <- list(member = 3, names = c("Tom", "Jerry", "Lily")) |

1 | names(x) # x 列表元素的别名 |

使用
$
取列表的某一位置的数据
1.5 因子 factors
因子是一种特殊的向量:映射到整数编码,并记录所有可能的类别(称为水平,levels)。
使用 factor()
函数创建因子:
1 | # 示例:性别数据 |

1.6 对象的判断和转换
1.6.1 强制转换
把 R 对象从一种类型强制转化成另一个类型
1 | x <- 1:6 |

- 如果转换失败,则返回
NA
1 | x <- c("a", "b", "c") |

1.6.2 判断
NA
:缺失数据 not availableNaN
:无意义的数 not a number
格式:使用函数判断
1 | # 每个元素分别判断 |
例如:
1 | x <- c(4, -1, NA) |

特殊的数字计算
Inf
无穷的计算
1 | Inf + (-Inf) # NaN |
2 数据的输入
2.1 外部数据类型
- 文本文件
例如 .txt
.csv
.dat
文件
- 其他文件
例如 .xls
.xlsx
(Excel) 、 .sas7bdat
(SAS)、 .sav
(SPSS)、.dta
(Stata)、.RData
® 和 .dat
文件
先进行转化再读取,或用专门的程序包
2.2 文本数据读取
读取文本数据常见的函数
1 | read.table() |
例如:
1 | read.table("example.txt") |
2.3 read.table()
函数
参数
1 | read.table(file, header = FALSE, sep = "", quote = "\"'", |
1 | - file: 文件名路径, 字符串形式 |
例如:读取下面的 grade.txt
文件
1 | -------------------------------------------- |
1 | t <- read.table( |
1 | > t |
其他读取函数类似,只是参数默认值不同,可以相互替代
1 | read.csv(file, header = TRUE, sep = ",", ...) |
对于一些常规的文本文件,可直接使用默认参数。例如:
- 标准的
.txt
数据文件
1 | "A", 1, 10.1 |
- 标准的
.csv
文件
1 | a,b,c |
可以直接使用
1 | read.table("example.txt") |
2.4 scan()
函数
scan()
函数更灵活,可以读进不规则的数值文档,得到一个向量或者列表
- 需要
what
参数指定变量类型,得到一个列表
例如:针对下面的 .txt
文件
1 | M 65 168 |
1 | # 指定第一列字符,第二、三列为数值 |

scan()
函数还可以读取不规则长度的数值文档,得到一个向量
例如:对于数值文档 example2.txt
1 | 1 |
1 | > scan("example2.txt") |
2.5 read.fwf()
函数
读取文件中一些固定宽度数据,例如可以指定每一列的宽度为几,函数便会按照提前设置的宽度读取数据
1 | # M65168 |
2.6 读取 excel 数据
- 转换为
csv
文件读取 - 复制后使用
read.delim("clipboard")
从剪切板
中读取 - 使用程序包读取
常用程序包 readxl
1 | install.packages("readxl") |
2.7 读取网页 url()
和 readLines()
函数
1 | con <- url("https://www.baidu.com/") |
3 数据的输出
3.1 write.table()
函数
参数
1 | write.table(x, file = "", append = FALSE, quote = TRUE, sep = " ", |
1 | """将 x 写入文件 file 中""" |
例如:
1 | # 创建数据框 d |