【R语言】readr笔记

readr包提供了一些在R中读写文本数据的函数。

读取文件

  • read_csv()读取逗号分隔文件
  • read_csv2()读取分号分隔文件
  • read_tsv()读取制表符分隔文件
  • read_delim()读取使用任意分隔符的文件
  • read_fwf()读取固定宽度的文件

由于这些函数具有类似的语法,这里以read_csv()为例做介绍。

读取外部文件

1
heights <- read_csv("data/heights.csv")

当运行read_csv()时,它会打印一份数据列说明,给出每个列的名称和类型。

读取行内文件

read_csv()函数都使用数据的第一行作为列名称。

1
2
3
read_csv("a,b,c
1,2,3
4,5,6")
1
2
3
4
5
# A tibble: 2 x 3
a b c
<dbl> <dbl> <dbl>
1 1 2 3
2 4 5 6

开头元数据处理

有时文件开头会有好几行元数据。你可以使用skip = n来跳过前n行;或者使用comment = "#"来丢弃所有以#开头的行:

1
2
3
4
read_csv("The first line of metadata
The second line of metadata
x,y,z
1,2,3", skip = 2)
1
2
3
4
# A tibble: 1 x 3
x y z
<dbl> <dbl> <dbl>
1 1 2 3
1
2
3
read_csv("# A comment I want to skip
x,y,z
1,2,3", comment = "#")
1
2
3
4
# A tibble: 1 x 3
x y z
<dbl> <dbl> <dbl>
1 1 2 3

数据没有列名称

我们可以使用col_names = FALSE来使得read_csv()不要将第一行作为列标题,而是将各列依次标注为X1至Xn:

1
read_csv("1,2,3\n4,5,6", col_names = FALSE)
1
2
3
4
5
# A tibble: 2 x 3
X1 X2 X3
<dbl> <dbl> <dbl>
1 1 2 3
2 4 5 6

我们也可以向col_names传递一个字符向量,以用作列名称:

1
read_csv("1,2,3\n4,5,6", col_names = c("x", "y", "z"))
1
2
3
4
5
# A tibble: 2 x 3
x y z
<dbl> <dbl> <dbl>
1 1 2 3
2 4 5 6

写入文件

  • write_csv():写入csv文件
  • write_tsv():写入tsv文件

这两个函数输出的文件能够顺利读取的概率更高,因为:

  • 它们总是使用UTF-8对字符串进行编码;
  • 它们使用ISO 8601格式来保存日期和日期时间数据,以便这些数据不论在何种环境下都更容易解析。
1
write_csv(challenge, "challenge-2.csv")

《R数据科学》学习笔记


----------- 本文结束啦感谢您阅读 -----------

赞赏一杯咖啡

欢迎关注我的其它发布渠道