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


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。