read_csv 和 read.csv 之间的实际区别是什么?什么时候应该用一个代替另一个?

What is the practical difference between read_csv and read.csv? When should one be used over another?

我经常使用逗号分隔值,并且很好奇 read_csv()read.csv() 之间的区别。

是否有任何实际差异可以阐明两者的情境用法?

引自the introduction page.

11.2.1 与基础 R 相比

如果您以前使用过 R,您可能想知道为什么我们不使用 read.csv()。有几个很好的理由支持 readr 函数而不是基本等价物:

它们通常比其基本等效项快得多(~10 倍)。长 运行 作业有一个进度条,因此您可以看到发生了什么。如果您正在寻找原始速度,请尝试 data.table::fread()。它不太适合 tidyverse,但它可以快很多。

它们生成小标题,不将字符向量转换为因子*,不使用行名称,也不修改列名称。这些是对基本 R 函数感到沮丧的常见原因。

它们的重现性更高。 Base R 函数从您的操作系统和环境变量中继承了一些行为,因此在您的计算机上运行的导入代码可能无法在其他人的计算机上运行。


*注意从R 4.0.0

R [...] uses a stringsAsFactors = FALSE default, and hence by default no longer converts strings to factors in calls to data.frame() and read.table().

read_csv() 读取逗号分隔的数字。 1,000 读作 1000。

original numbers

read by read_csv

read by read.csv