當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R readr spec_delim 生成列規範


打印時,默認隻打印前 20 列。要覆蓋,可以使用設置 options(readr.num_columns) 來修改它(值 0 將關閉打印)。

用法

spec_delim(
  file,
  delim = NULL,
  quote = "\"",
  escape_backslash = FALSE,
  escape_double = TRUE,
  col_names = TRUE,
  col_types = list(),
  col_select = NULL,
  id = NULL,
  locale = default_locale(),
  na = c("", "NA"),
  quoted_na = TRUE,
  comment = "",
  trim_ws = FALSE,
  skip = 0,
  n_max = 0,
  guess_max = 1000,
  name_repair = "unique",
  num_threads = readr_threads(),
  progress = show_progress(),
  show_col_types = should_show_types(),
  skip_empty_rows = TRUE,
  lazy = should_read_lazy()
)

spec_csv(
  file,
  col_names = TRUE,
  col_types = list(),
  col_select = NULL,
  id = NULL,
  locale = default_locale(),
  na = c("", "NA"),
  quoted_na = TRUE,
  quote = "\"",
  comment = "",
  trim_ws = TRUE,
  skip = 0,
  n_max = 0,
  guess_max = 1000,
  name_repair = "unique",
  num_threads = readr_threads(),
  progress = show_progress(),
  show_col_types = should_show_types(),
  skip_empty_rows = TRUE,
  lazy = should_read_lazy()
)

spec_csv2(
  file,
  col_names = TRUE,
  col_types = list(),
  col_select = NULL,
  id = NULL,
  locale = default_locale(),
  na = c("", "NA"),
  quoted_na = TRUE,
  quote = "\"",
  comment = "",
  trim_ws = TRUE,
  skip = 0,
  n_max = 0,
  guess_max = 1000,
  progress = show_progress(),
  name_repair = "unique",
  num_threads = readr_threads(),
  show_col_types = should_show_types(),
  skip_empty_rows = TRUE,
  lazy = should_read_lazy()
)

spec_tsv(
  file,
  col_names = TRUE,
  col_types = list(),
  col_select = NULL,
  id = NULL,
  locale = default_locale(),
  na = c("", "NA"),
  quoted_na = TRUE,
  quote = "\"",
  comment = "",
  trim_ws = TRUE,
  skip = 0,
  n_max = 0,
  guess_max = 1000,
  progress = show_progress(),
  name_repair = "unique",
  num_threads = readr_threads(),
  show_col_types = should_show_types(),
  skip_empty_rows = TRUE,
  lazy = should_read_lazy()
)

spec_table(
  file,
  col_names = TRUE,
  col_types = list(),
  locale = default_locale(),
  na = "NA",
  skip = 0,
  n_max = 0,
  guess_max = 1000,
  progress = show_progress(),
  comment = "",
  show_col_types = should_show_types(),
  skip_empty_rows = TRUE
)

參數

file

文件路徑、連接或文字數據(單個字符串或原始向量)。

.gz.bz2.xz.zip 結尾的文件將自動解壓縮。將自動下載以 http://https://ftp://ftps:// 開頭的文件。遠程gz文件也可以自動下載並解壓。

文字數據對於示例和測試最有用。要被識別為文字數據,輸入必須用 I() 包裝,是包含至少一個換行符的字符串,或者是至少包含一個帶有換行符的字符串的向量。

使用值 clipboard() 將從係統剪貼板讀取。

delim

用於分隔記錄中的字段的單個字符。

quote

用於引用字符串的單個字符。

escape_backslash

文件是否使用反斜杠來轉義特殊字符?這比 escape_double 更通用,因為反斜杠可用於轉義分隔符、引號字符,或添加特殊字符,例如 \\n

escape_double

文件是否通過加倍引號來轉義引號?即,如果此選項為 TRUE ,則值 """" 表示單引號 \"

col_names

TRUEFALSE 或列名稱的字符向量。

如果 TRUE ,輸入的第一行將用作列名稱,並且不會包含在 DataFrame 中。如果 FALSE ,將自動生成列名稱:X1、X2、X3 等。

如果 col_names 是字符向量,則這些值將用作列的名稱,並且輸入的第一行將被讀入輸出數據幀的第一行。

缺少 ( NA ) 列名將生成警告,並用虛擬名稱 ...1...2 等進行填充。重複的列名將生成警告並使其唯一,請參閱 name_repair 來控製其方式完畢。

col_types

NULLcols() 規範或字符串之一。有關更多詳細信息,請參閱vignette("readr")

如果是 NULL ,則所有列類型都將從輸入的 guess_max 行推斷出來,散布在整個文件中。這很方便(而且快速),但不夠穩健。如果猜測的類型錯誤,您需要增加 guess_max 或自己提供正確的類型。

list()cols() 創建的列規範必須為每一列包含一個列規範。如果您隻想讀取列的子集,請使用 cols_only()

或者,您可以使用緊湊的字符串表示形式,其中每個字符代表一列:

  • c = 字符

  • 我 = 整數

  • n = 數字

  • d = 雙

  • l = 邏輯

  • f = 因子

  • D = 日期

  • T = 日期時間

  • t = 時間

  • ? = 猜猜

  • _ 或 - = 跳過

默認情況下,讀取沒有列規範的文件將打印一條消息,顯示 readr 猜測的內容。要刪除此消息,請設置 show_col_types = FALSE 或設置 `options(readr.show_col_types = FALSE)。

col_select

要包含在結果中的列。您可以使用與dplyr::select() 相同的mini-language 來按名稱引用列。使用c() 可以使用多個選擇表達式。盡管這種用法不太常見,col_select 也接受數字列索引。有關選擇語言的完整詳細信息,請參閱?tidyselect::language

id

用於存儲文件路徑的列的名稱。當讀取多個輸入文件並且文件路徑中有數據(例如數據收集日期)時,這非常有用。如果NULL(默認值)則不會創建額外的列。

locale

區域設置控製默認值因地而異。默認區域設置為 US-centric(如 R),但您可以使用 locale() 創建自己的區域設置來控製默認時區、編碼、小數標記、大標記和日/月名稱等內容。

na

要解釋為缺失值的字符串的字符向量。將此選項設置為 character() 以指示沒有缺失值。

quoted_na

引號內的缺失值是否應被視為缺失值(默認)或字符串。從 readr 2.0.0 開始,此參數已被軟棄用。

comment

用於標識評論的字符串。注釋字符之後的任何文本都將被默默忽略。

trim_ws

在解析每個字段之前是否應該刪除前導和尾隨空格(ASCII 空格和製表符)?

skip

讀取數據之前要跳過的行數。如果提供comment,則跳過後任何注釋行都將被忽略。

n_max

讀取的最大行數。

guess_max

用於猜測列類型的最大行數。永遠不會使用超過讀取的行數。有關更多詳細信息,請參閱vignette("column-types", package = "readr")

name_repair

列名的處理。默認行為是確保列名稱為 "unique" 。支持多種修複策略:

  • "minimal":除了名稱的基本存在之外,沒有名稱修複或檢查。

  • "unique"(默認值):確保名稱唯一且不為空。

  • "check_unique" :沒有名稱修複,但檢查它們是 unique

  • "universal" :將名稱命名為 unique 並進行語法設置。

  • 函數:應用自定義名稱修複(例如,name_repair = make.names 用於基本 R 樣式的名稱)。

  • purrr-style 匿名函數,請參閱rlang::as_function()

此參數作為 repair 傳遞到 vctrs::vec_as_names() 。有關這些條款以及用於執行這些條款的策略的更多詳細信息,請參閱此處。

num_threads

用於初始解析和延遲讀取數據的處理線程數。如果您的數據在字段中包含換行符,解析器應自動檢測到這一點並回退到僅使用一個線程。但是,如果您知道文件在帶引號的字段中包含換行符,那麽顯式設置 num_threads = 1 是最安全的。

progress

顯示進度條?默認情況下,它隻會在交互式會話中顯示,而不會在編織文檔時顯示。可以通過將選項 readr.show_progress 設置為 FALSE 來禁用自動進度條。

show_col_types

如果是 FALSE ,則不顯示猜測的列類型。如果 TRUE 始終顯示列類型,即使提供了列類型。如果 NULL(默認)僅在 col_types 參數未顯式提供列類型時顯示列類型。

skip_empty_rows

空白行應該被完全忽略嗎?即,如果此選項是TRUE,則根本不會表示空白行。如果是FALSE,則它們將由所有列中的NA 值表示。

lazy

懶惰地讀取值?默認情況下,這是 FALSE ,因為延遲讀取文件時有一些特殊的考慮因子,這導致了一些用戶的錯誤。具體來說,讀取然後寫回同一個文件時,事情會變得很棘手。但是,一般來說,惰性讀取 ( lazy = TRUE ) 有很多好處,特別是對於交互式使用以及當您的下遊工作僅涉及行或列的子集時。

should_read_lazy()vroom::vroom()altrep 參數的文檔中了解更多信息。

為文件生成的col_spec

例子

# Input sources -------------------------------------------------------------
# Retrieve specs from a path
spec_csv(system.file("extdata/mtcars.csv", package = "readr"))
#> cols(
#>   mpg = col_double(),
#>   cyl = col_double(),
#>   disp = col_double(),
#>   hp = col_double(),
#>   drat = col_double(),
#>   wt = col_double(),
#>   qsec = col_double(),
#>   vs = col_double(),
#>   am = col_double(),
#>   gear = col_double(),
#>   carb = col_double()
#> )
spec_csv(system.file("extdata/mtcars.csv.zip", package = "readr"))
#> cols(
#>   mpg = col_double(),
#>   cyl = col_double(),
#>   disp = col_double(),
#>   hp = col_double(),
#>   drat = col_double(),
#>   wt = col_double(),
#>   qsec = col_double(),
#>   vs = col_double(),
#>   am = col_double(),
#>   gear = col_double(),
#>   carb = col_double()
#> )

# Or directly from a string (must contain a newline)
spec_csv(I("x,y\n1,2\n3,4"))
#> cols(
#>   x = col_double(),
#>   y = col_double()
#> )

# Column types --------------------------------------------------------------
# By default, readr guesses the columns types, looking at 1000 rows
# throughout the file.
# You can specify the number of rows used with guess_max.
spec_csv(system.file("extdata/mtcars.csv", package = "readr"), guess_max = 20)
#> cols(
#>   mpg = col_double(),
#>   cyl = col_double(),
#>   disp = col_double(),
#>   hp = col_double(),
#>   drat = col_double(),
#>   wt = col_double(),
#>   qsec = col_double(),
#>   vs = col_double(),
#>   am = col_double(),
#>   gear = col_double(),
#>   carb = col_double()
#> )

相關用法


注:本文由純淨天空篩選整理自Hadley Wickham等大神的英文原創作品 Generate a column specification。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。