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


R write.table 數據輸出

R語言 write.table 位於 utils 包(package)。

說明

write.table 將其所需的參數 x (如果它不是一個也不是矩陣,則將其轉換為數據幀後)打印到文件或 connection

用法

write.table(x, file = "", append = FALSE, quote = TRUE, sep = " ",
            eol = "\n", na = "NA", dec = ".", row.names = TRUE,
            col.names = TRUE, qmethod = c("escape", "double"),
            fileEncoding = "")

write.csv(...)
write.csv2(...)

參數

x

要寫入的對象,最好是矩陣或 DataFrame 。如果不是,則嘗試將x強製為數據幀。

file

命名文件的字符串或打開用於寫入的connection""表示輸出到控製台。

append

合乎邏輯的。僅當 file 是字符串時才相關。如果是 TRUE ,則輸出將附加到文件中。如果是 FALSE ,則該名稱的任何現有文件都將被銷毀。

quote

邏輯值( TRUEFALSE )或數值向量。如果 TRUE ,任何字符或因子列都將用雙引號引起來。如果是數值向量,則其元素被視為要引用的列的索引。在這兩種情況下,行名和列名如果被寫入的話都會被引用。如果是 FALSE ,則不引用任何內容。

sep

字段分隔符字符串。 x 的每行中的值均以此字符串分隔。

eol

在每行(行)末尾打印的字符。例如,eol = "\r\n" 將在類 Unix 操作係統上生成 Windows 的行結尾,而 eol = "\r" 將生成 Excel:mac 2004 所期望的文件。

na

用於數據中缺失值的字符串。

dec

用於數字或複雜列中小數點的字符串:必須是單個字符。

row.names

指示 x 的行名稱是否要與 x 一起寫入的邏輯值,或者要寫入的行名稱的字符向量。

col.names

指示 x 的列名稱是否要與 x 一起寫入的邏輯值,或者要寫入的列名稱的字符向量。有關 col.names = NA 的含義,請參閱“CSV 文件”部分。

qmethod

一個字符串,指定在引用字符串時如何處理嵌入的雙引號字符。必須是 "escape" (默認為 write.table )之一,在這種情況下,引號字符在 C 風格中通過反斜杠進行轉義,或 "double" (默認為 write.csvwrite.csv2 )之一,在這種情況下是雙倍的。您可以僅指定首字母。

fileEncoding

字符串:如果非空則聲明要在文件(而不是連接)上使用的編碼,因此可以在寫入字符數據時對其進行重新編碼。請參閱file

...

write.table 的參數:appendcol.namessepdecqmethod 無法更改。

細節

如果表沒有列,則僅在 row.names = TRUE 時才會寫入行名,反之亦然。

實數和複數以盡可能高的精度寫入。

如果 DataFrame 具有類似矩陣的列,這些列將轉換為結果中的多列(通過 as.matrix ),因此字符 col.names 或數字 quote 應引用結果中的列,而不是輸入。默認情況下,此類類似矩陣的列不帶引號。

DataFrame 中任何列表或具有類(例如日期)的列都將通過適當的 as.character 方法進行轉換:默認情況下,此類列不帶引號。另一方麵,矩陣的任何類信息都將被丟棄,非原子(例如列表)矩陣將被強製為字符。

如果 quote 指定,則隻有已轉換為字符的列才會被引用。

dec 參數僅適用於不受轉換為字符的列,因為它們具有類或者是類似矩陣的列(或矩陣)的一部分,特別是受 I() 保護的列。使用options("OutDec") 來控製此類轉換。

在幾乎所有情況下,數值量的轉換均由選項 "scipen" 控製(請參閱 options ),但具有 digits = 15 的內部等效項。為了進行更精細的控製,請使用format創建字符矩陣/ DataFrame ,並對其調用write.table

這些函數每 1000 行輸出檢查一次用戶中斷。

如果file是非打開連接,則嘗試打開它,然後在使用後關閉它。

要在 Windows 上寫入 Unix-style 文件,請使用二進製連接,例如file = file("filename", "wb")

CSV 文件

默認情況下,行名稱列沒有列名稱。如果col.names = NArow.names = TRUE添加空白列名稱,這是電子表格讀取 CSV 文件的約定。請注意,此類 CSV 文件可以讀入R經過

  read.csv(file = "<filename>", row.names = 1)

write.csvwrite.csv2 為編寫 CSV 文件提供了方便的包裝器。他們將sepdec(見下文)、qmethod = "double"col.names設置為NA(如果row.names = TRUE(默認)),否則設置為TRUE

write.csv 使用"." 作為小數點,使用逗號作為分隔符。

write.csv2 使用逗號作為小數點,使用分號作為分隔符,這是某些西歐語言環境中 CSV 文件的 Excel 約定。

這些包裝器故意不靈活:它們旨在確保使用正確的約定來寫入有效的文件。更改 appendcol.namessepdecqmethod 的嘗試將被忽略,並顯示警告。

CSV 文件不記錄編碼,如果對於許多其他應用程序來說它們不是 ASCII,這會導致問題。如果文件是 ASCII 或 UTF-16(使用 fileEncoding = "UTF-16LE" )或者可能是當前 Windows 代碼頁(例如 "CP1252" ),Windows Excel 2007/10 將正確打開文件(例如,通過文件關聯機製),但是 ' “文本導入向導”(來自“數據”選項卡)允許更多的編碼選擇。 Excel:mac 2004/8 隻能導入“Macintosh”(這似乎意味著 Mac Roman)、“Windows”(可能是 Latin-1)和“PC-8”文件。 OpenOffice 3.x 在打開文件時詢問字符集。

CSV 文件有一個 IETF RFC4180 ( https://www.rfc-editor.org/rfc/rfc4180 ),它強製要求使用逗號作為分隔符和 CRLF 行結尾。 write.csv 在 Windows 上寫入兼容文件:在其他平台上使用 eol = "\r\n"

注意

對於具有大量(數百或更多)列的數據幀,write.table 可能會很慢:這是不可避免的,因為每列可能屬於不同的類,因此必須單獨處理。如果它們都屬於同一類,請考慮使用矩陣。

例子

x <- data.frame(a = I("a \" quote"), b = pi)
tf <- tempfile(fileext = ".csv")

## To write a CSV file for input to Excel one might use
write.table(x, file = tf, sep = ",", col.names = NA,
            qmethod = "double")
file.show(tf)
## and to read this file back into R one needs
read.table(tf, header = TRUE, sep = ",", row.names = 1)
## NB: you do need to specify a separator if qmethod = "double".

### Alternatively
write.csv(x, file = tf)
read.csv(tf, row.names = 1)
## or without row names
write.csv(x, file = tf, row.names = FALSE)
read.csv(tf)

## Not run: 
## To write a file in Mac Roman for simple use in Mac Excel 2004/8
write.csv(x, file = "foo.csv", fileEncoding = "macroman")
## or for Windows Excel 2007/10
write.csv(x, file = "foo.csv", fileEncoding = "UTF-16LE")

## End(Not run)

也可以看看

“R 數據導入/導出”手冊。

read.tablewrite

write.matrix 位於包 MASS 中。

相關用法


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