使用 data.table 导入

data.table 包引入了 fread 功能。虽然它类似于 read.table,但 fread 通常更快,更灵活,自动猜测文件的分隔符。

# get the file path of a CSV included in R's utils package
csv_path <- system.file("misc", "exDIF.csv", package = "utils")

# path will vary based on R installation location
csv_path
## [1] "/Library/Frameworks/R.framework/Resources/library/utils/misc/exDIF.csv"

dt <- fread(csv_path)

dt
##     Var1 Var2
## 1:  2.70    A
## 2:  3.14    B
## 3: 10.00    A
## 4: -7.00    A

参数 input 是一个表示以下内容的字符串:

  • 文件名( 例如 filename.csv),
  • 作用于文件的 shell 命令( 例如 grep 'word' filename),或
  • 输入本身( 例如 input1, input2 \n A, B \n C, D)。

fread 返回类 data.table 的一个对象,它继承自 data.frame 类,适用于 data.table 对 [] 的使用。要返回普通的 data.frame,请将 data.table 参数设置为 FALSE

df <- fread(csv_path, data.table = FALSE)

class(df)
## [1] "data.frame"

df
##    Var1 Var2
## 1  2.70    A
## 2  3.14    B
## 3 10.00    A
## 4 -7.00    A

笔记

  • freadread.table 没有相同的选项。一个缺少的论点是 na.comment,如果源文件包含 #,可能导致不需要的行为。
  • fread 仅使用 " 作为 quote 参数。
  • fread 使用少量(5)行来猜测变量类型。