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


R dcf 以 DCF 格式读写数据


R语言 dcf 位于 base 包(package)。

说明

读或写一个RDebian 控制文件格式的文件中的对象或对象。

用法

read.dcf(file, fields = NULL, all = FALSE, keep.white = NULL)

write.dcf(x, file = "", append = FALSE, useBytes = FALSE,
          indent = 0.1 * getOption("width"),
          width = 0.9 * getOption("width"),
          keep.white = NULL)

参数

file

命名文件的字符串或 connection""表示输出到控制台。对于read.dcf,这可以命名压缩文件(请参阅gzfile)。

fields

从 DCF 文件中读取的字段。默认是读取所有字段。

all

一个逻辑,指示在记录中某个字段多次出现的情况下是否应收集所有这些字段。如果 all 为 false(默认),则仅使用最后一次出现的情况。

keep.white

一个字符串,其中包含应保留空格的字段名称,或 NULL(默认)表示不存在此类字段。如果可能的话,强制性格。对于不按原样保留空格的字段, read.dcf 删除前导和尾随空格,并且 write.dcf 使用 strwrap 折叠。

x

要写入的对象,通常是数据帧。如果不是,则尝试将x强制为数据帧。

append

合乎逻辑的。如果是 TRUE ,则输出将附加到文件中。如果是 FALSE ,则该名称的任何现有文件都将被销毁。

useBytes

逻辑上传递给 writeLines() ,请参见:“for expert use”。

indent

一个正整数,指定输出条目中连续行的缩进。

width

一个正整数,给出在输出中换行的目标列。

细节

DCF 是一种以纯文本文件存储数据库的简单格式,人类可以轻松地直接读取和写入。 DCF用于各种地方存储R系统信息,例如包的说明和内容。

DCF 规则实施于R是:

  1. 数据库由一条或多条记录组成,每条记录都有一个或多个命名字段。并非每条记录都必须包含每个字段。字段可能在记录中出现多次。

  2. 常规行以非空白字符开头。

  3. 常规行的形式为 tag:value ,即具有名称标签和字段值,以 : 分隔(仅第一个 : 计数)。该值可以为空(即仅包含空格)。

  4. 如果行中至少有一个字符非空格,则以空格开头的行是延续行(到前一字段)。连续行,其中唯一的非空白字符是 '⁠.⁠' 被视为空行(允许 multi-paragraph 字段值)。

  5. 记录由一个或多个空行(即仅有空格)分隔。

  6. 单独的行不能任意长;之前R3.0.2 的长度限制约为每行 8191 字节。

注意read.dcf(all = FALSE)逐字节读取文件。这允许‘DESCRIPTION' 要读取的文件并且仅使用其 ASCII 字段,或其'⁠编码⁠’字段用于重新编码其余字段。

write.dcf 不写入NA 字段。

默认 read.dcf(all = FALSE) 返回一个字符矩阵,每个记录一行,每个字段一列。除非字段在 keep.white 中列出,否则字段值的前导和尾随空格将被忽略。如果文件中指定了标签名称,但对应的值为空,则返回空字符串。如果在 fields 中指定了字段的标记名称,但从未在记录中使用过,则对应的值为 NA 。如果记录中的字段重复,则返回最后遇到的字段。格式错误的行会导致错误。

对于read.dcf(all = TRUE),返回一个数据帧,同样每个记录一行,每个字段一列。这些列是多次出现的字段的字符向量列表,否则是字符向量。

请注意,空的file是有效的DCF文件,read.dcf将返回zero-row矩阵或数据帧。

对于 write.dcf ,不可见 NULL

注意

来自R3.4.0,‘whitespace’ 在所有情况下都包含换行符。

例子


## Create a reduced version of the DESCRIPTION file in package 'splines'
x <- read.dcf(file = system.file("DESCRIPTION", package = "splines"),
              fields = c("Package", "Version", "Title"))
write.dcf(x)

## An online DCF file with multiple records
con <- url("https://cran.r-project.org/src/contrib/PACKAGES")
y <- read.dcf(con, all = TRUE)
close(con)
utils::str(y)

参考

https://www.debian.org/doc/debian-policy/ch-controlfields.html.

Note that R does not require encoding in UTF-8, which is a recent Debian requirement. Nor does it use the Debian-specific sub-format which allows comment lines starting with ‘⁠#⁠’.

也可以看看

write.table

available.packages ,它使用 read.dcf 读取包存储库的索引。

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Read and Write Data in DCF Format。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。