←
PDF 154 / 520 Compared to Base R
→
English · PDF 154
Original PDF page 154
中文 · PDF 154
#> 1 1 2 3
#> 2 4 5 6

另一个经常需要调整的选项是 na。它指定用于表示文件中缺失值的值(或多个值):

read_csv("a,b,c\n1,2,.", na = ".") #> # A tibble: 1 × 3 #> a b c #> #> 1 1 2

掌握这些知识就足以读取你在实践中遇到的约 75% 的 CSV 文件了。你还可以轻松地将所学内容加以变通,使用 read_tsv() 读取制表符分隔的文件,使用 read_fwf() 读取固定宽度文件。要读取更具挑战性的文件,你需要进一步了解 readr 如何解析每一列,并将它们转换为 R 向量。

与 Base R 的比较

如果你以前用过 R,你可能会奇怪为什么我们不使用 read.csv()。相比基础函数,有几个充分的理由让我们更倾向于使用 readr 函数:

  • 它们通常比基础等价函数快得多(约 10 倍)。长时间运行的任务会有进度条,让你可以看到正在发生什么。如果你追求极致速度,可以试试 data.table::fread()。它与 tidyverse 的契合度没那么高,但速度可能快不少。
  • 它们生成 tibble,不会将字符向量转换为因子,不使用行名,也不会篡改列名。这些是使用基础 R 函数时常见的挫败感来源。
  • 它们更具可重现性。基础 R 函数会从你的操作系统和环境变量中继承某些行为,因此在你电脑上能正常运行的导入代码,在别人的电脑上可能无法运行。

练习

    1. 如果一个文件的字段是用 " 分隔的,你会使用什么函数来读取它?|"?