使用 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)行來猜測變數型別。