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


R readr write_delim 將數據幀寫入分隔文件


write_*() 係列函數是對 write.csv() 等類似函數的改進,因為它們的速度大約是 write.csv() 的兩倍。與 write.csv() 不同,這些函數不包括行名稱作為寫入文件中的列。通用函數 output_column() 應用於每個變量以將列強製為合適的輸出。

用法

write_delim(
  x,
  file,
  delim = " ",
  na = "NA",
  append = FALSE,
  col_names = !append,
  quote = c("needed", "all", "none"),
  escape = c("double", "backslash", "none"),
  eol = "\n",
  num_threads = readr_threads(),
  progress = show_progress(),
  path = deprecated(),
  quote_escape = deprecated()
)

write_csv(
  x,
  file,
  na = "NA",
  append = FALSE,
  col_names = !append,
  quote = c("needed", "all", "none"),
  escape = c("double", "backslash", "none"),
  eol = "\n",
  num_threads = readr_threads(),
  progress = show_progress(),
  path = deprecated(),
  quote_escape = deprecated()
)

write_csv2(
  x,
  file,
  na = "NA",
  append = FALSE,
  col_names = !append,
  quote = c("needed", "all", "none"),
  escape = c("double", "backslash", "none"),
  eol = "\n",
  num_threads = readr_threads(),
  progress = show_progress(),
  path = deprecated(),
  quote_escape = deprecated()
)

write_excel_csv(
  x,
  file,
  na = "NA",
  append = FALSE,
  col_names = !append,
  delim = ",",
  quote = "all",
  escape = c("double", "backslash", "none"),
  eol = "\n",
  num_threads = readr_threads(),
  progress = show_progress(),
  path = deprecated(),
  quote_escape = deprecated()
)

write_excel_csv2(
  x,
  file,
  na = "NA",
  append = FALSE,
  col_names = !append,
  delim = ";",
  quote = "all",
  escape = c("double", "backslash", "none"),
  eol = "\n",
  num_threads = readr_threads(),
  progress = show_progress(),
  path = deprecated(),
  quote_escape = deprecated()
)

write_tsv(
  x,
  file,
  na = "NA",
  append = FALSE,
  col_names = !append,
  quote = "none",
  escape = c("double", "backslash", "none"),
  eol = "\n",
  num_threads = readr_threads(),
  progress = show_progress(),
  path = deprecated(),
  quote_escape = deprecated()
)

參數

x

要寫入磁盤的數據幀或小塊。

file

要寫入的文件或連接。

delim

用於分隔值的分隔符。對於 write_delim() 默認為 " ",對於 write_excel_csv() 默認為 ",",對於 write_excel_csv2() 默認為 ";"。必須是單個字符。

na

用於缺失值的字符串。默認為 NA。缺失值永遠不會被引用;與 na 具有相同值的字符串將始終被引用。

append

如果 FALSE ,將覆蓋現有文件。如果 TRUE ,將追加到現有文件。在這兩種情況下,如果文件不存在,則會創建新文件。

col_names

如果 FALSE ,列名將不會包含在文件頂部。如果 TRUE ,將包含列名稱。如果未指定,col_names 將采用給定 append 的相反值。

quote

如何處理包含需要引用的字符的字段。

  • needed - 僅在需要時才引用值:如果它們包含分隔符、引號或換行符。

  • all - 引用所有字段。

  • none - 切勿引用字段。

escape

當數據中存在引號時要使用的轉義類型。

  • double - 引號通過加倍來轉義。

  • backslash - 引號通過前麵的反斜杠轉義。

  • none - 引號不會轉義。

eol

要使用的行結束符。最常見的是 "\n" 用於 Unix 樣式換行符,或 "\r\n" 用於 Windows 樣式換行符。

num_threads

讀取和具體化向量時使用的線程數。如果您的數據在字段中包含換行符,解析器將自動強製僅使用單個線程。

progress

顯示進度條?默認情況下,它隻會在交互式會話中顯示,而不會在編織文檔時顯示。顯示每 50,000 個值更新一次,並且僅在估計讀取時間為 5 秒或更長時才會顯示。可以通過將選項 readr.show_progress 設置為 FALSE 來禁用自動進度條。

path

[Deprecated]使用file相反。

quote_escape

[Deprecated]使用escape相反。

write_*() 以不可見方式返回輸入x

輸出

因子是被迫的。使用 grisu3 算法將雙精度數格式化為十進製字符串。POSIXct值的格式為帶有 UTC 時區的 ISO8601注意:本地或非 UTC 時區的 POSIXct 對象在寫入前將轉換為 UTC 時間。

所有列均編碼為 UTF-8。 write_excel_csv()write_excel_csv2() 還包括 UTF-8 Byte order mark,它向 Excel 指示 csv 是 UTF-8 編碼的。

創建 write_excel_csv2()write_csv2 是為了允許具有不同區域設置的用戶使用默認設置保存 .csv 文件(例如,; 作為列分隔符,, 作為小數點分隔符)。這在一些歐洲國家很常見。

僅當值包含逗號、引號或換行符時才用引號引起來。

如果給出適當的擴展名,write_*() 函數將自動壓縮輸出。目前支持三種擴展:.gz(用於 gzip 壓縮)、.bz2(用於 bzip2 壓縮)和 .xz(用於 lzma 壓縮)。請參閱示例以獲取更多信息。

參考

Florian Loitsch,使用整數快速準確地打印浮點數,PLDI '10,http://www.cs.tufts.edu/~nr/cs257/archive/florian-loitsch/printf.pdf

例子

# \dontshow{
.old_wd <- setwd(tempdir())
# }
# If only a file name is specified, write_()* will write
# the file to the current working directory.
write_csv(mtcars, "mtcars.csv")
write_tsv(mtcars, "mtcars.tsv")

# If you add an extension to the file name, write_()* will
# automatically compress the output.
write_tsv(mtcars, "mtcars.tsv.gz")
write_tsv(mtcars, "mtcars.tsv.bz2")
write_tsv(mtcars, "mtcars.tsv.xz")
# \dontshow{
setwd(.old_wd)
# }
源代碼:R/write.R

相關用法


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