当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。