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


R readr melt_delim 返回分隔文件中每個標記的熔化數據(包括 csv 和 tsv)


[Superseded]該函數已在 readr 中被取代並移至熔化包.

用法

melt_delim(
  file,
  delim,
  quote = "\"",
  escape_backslash = FALSE,
  escape_double = TRUE,
  locale = default_locale(),
  na = c("", "NA"),
  quoted_na = TRUE,
  comment = "",
  trim_ws = FALSE,
  skip = 0,
  n_max = Inf,
  progress = show_progress(),
  skip_empty_rows = FALSE
)

melt_csv(
  file,
  locale = default_locale(),
  na = c("", "NA"),
  quoted_na = TRUE,
  quote = "\"",
  comment = "",
  trim_ws = TRUE,
  skip = 0,
  n_max = Inf,
  progress = show_progress(),
  skip_empty_rows = FALSE
)

melt_csv2(
  file,
  locale = default_locale(),
  na = c("", "NA"),
  quoted_na = TRUE,
  quote = "\"",
  comment = "",
  trim_ws = TRUE,
  skip = 0,
  n_max = Inf,
  progress = show_progress(),
  skip_empty_rows = FALSE
)

melt_tsv(
  file,
  locale = default_locale(),
  na = c("", "NA"),
  quoted_na = TRUE,
  quote = "\"",
  comment = "",
  trim_ws = TRUE,
  skip = 0,
  n_max = Inf,
  progress = show_progress(),
  skip_empty_rows = FALSE
)

參數

file

文件路徑、連接或文字數據(單個字符串或原始向量)。

.gz.bz2.xz.zip 結尾的文件將自動解壓縮。將自動下載以 http://https://ftp://ftps:// 開頭的文件。遠程gz文件也可以自動下載並解壓。

文字數據對於示例和測試最有用。要被識別為文字數據,輸入必須用 I() 包裝,是包含至少一個換行符的字符串,或者是至少包含一個帶有換行符的字符串的向量。

使用值 clipboard() 將從係統剪貼板讀取。

delim

用於分隔記錄中的字段的單個字符。

quote

用於引用字符串的單個字符。

escape_backslash

文件是否使用反斜杠來轉義特殊字符?這比 escape_double 更通用,因為反斜杠可用於轉義分隔符、引號字符,或添加特殊字符,例如 \\n

escape_double

文件是否通過加倍引號來轉義引號?即,如果此選項為 TRUE ,則值 """" 表示單引號 \"

locale

區域設置控製默認值因地而異。默認區域設置為 US-centric(如 R),但您可以使用 locale() 創建自己的區域設置來控製默認時區、編碼、小數標記、大標記和日/月名稱等內容。

na

要解釋為缺失值的字符串的字符向量。將此選項設置為 character() 以指示沒有缺失值。

quoted_na

引號內的缺失值是否應被視為缺失值(默認)或字符串。從 readr 2.0.0 開始,此參數已被軟棄用。

comment

用於標識評論的字符串。注釋字符之後的任何文本都將被默默忽略。

trim_ws

在解析每個字段之前是否應該刪除前導和尾隨空格(ASCII 空格和製表符)?

skip

讀取數據之前要跳過的行數。如果提供comment,則跳過後任何注釋行都將被忽略。

n_max

讀取的最大行數。

progress

顯示進度條?默認情況下,它隻會在交互式會話中顯示,而不會在編織文檔時顯示。可以通過將選項 readr.show_progress 設置為 FALSE 來禁用自動進度條。

skip_empty_rows

空白行應該被完全忽略嗎?即,如果此選項是TRUE,則根本不會表示空白行。如果是FALSE,則它們將由所有列中的NA 值表示。

四列的 tibble()

  • row ,令牌來自原始文件中的行

  • col ,令牌來自原始文件中的列

  • data_type ,令牌的數據類型,例如"integer""character""date" ,以與 guess_parser() 函數類似的方式進行猜測。

  • value ,令牌本身作為字符串,與其在原始文件中的表示形式保持不變。

如果存在解析問題,則會出現警告,告訴您有多少問題,並且您可以使用 problems() 檢索詳細信息。

細節

對於某些非矩形數據格式,將數據解析為融合格式(其中每行代表一個標記)可能很有用。

melt_csv()melt_tsv() 是一般 melt_delim() 的特殊情況。它們對於讀取最常見類型的平麵文件數據、逗號分隔值和製表符分隔值非常有用。 melt_csv2() 使用 ; 作為字段分隔符,使用 , 作為小數點。這在一些歐洲國家很常見。

也可以看看

read_delim() 用於從分隔文件讀取矩形數據的常規方法。

例子

# Input sources -------------------------------------------------------------
# Read from a path
melt_csv(readr_example("mtcars.csv"))
#> Warning: `melt_csv()` was deprecated in readr 2.0.0.
#> ℹ Please use `meltr::melt_csv()` instead
#> # A tibble: 363 × 4
#>      row   col data_type value
#>    <dbl> <dbl> <chr>     <chr>
#>  1     1     1 character mpg  
#>  2     1     2 character cyl  
#>  3     1     3 character disp 
#>  4     1     4 character hp   
#>  5     1     5 character drat 
#>  6     1     6 character wt   
#>  7     1     7 character qsec 
#>  8     1     8 character vs   
#>  9     1     9 character am   
#> 10     1    10 character gear 
#> # … with 353 more rows
melt_csv(readr_example("mtcars.csv.zip"))
#> # A tibble: 363 × 4
#>      row   col data_type value
#>    <dbl> <dbl> <chr>     <chr>
#>  1     1     1 character mpg  
#>  2     1     2 character cyl  
#>  3     1     3 character disp 
#>  4     1     4 character hp   
#>  5     1     5 character drat 
#>  6     1     6 character wt   
#>  7     1     7 character qsec 
#>  8     1     8 character vs   
#>  9     1     9 character am   
#> 10     1    10 character gear 
#> # … with 353 more rows
melt_csv(readr_example("mtcars.csv.bz2"))
#> # A tibble: 363 × 4
#>      row   col data_type value
#>    <dbl> <dbl> <chr>     <chr>
#>  1     1     1 character mpg  
#>  2     1     2 character cyl  
#>  3     1     3 character disp 
#>  4     1     4 character hp   
#>  5     1     5 character drat 
#>  6     1     6 character wt   
#>  7     1     7 character qsec 
#>  8     1     8 character vs   
#>  9     1     9 character am   
#> 10     1    10 character gear 
#> # … with 353 more rows
if (FALSE) {
melt_csv("https://github.com/tidyverse/readr/raw/main/inst/extdata/mtcars.csv")
}

# Or directly from a string (must contain a newline)
melt_csv("x,y\n1,2\n3,4")
#> # A tibble: 6 × 4
#>     row   col data_type value
#>   <dbl> <dbl> <chr>     <chr>
#> 1     1     1 character x    
#> 2     1     2 character y    
#> 3     2     1 integer   1    
#> 4     2     2 integer   2    
#> 5     3     1 integer   3    
#> 6     3     2 integer   4    

# To import empty cells as 'empty' rather than `NA`
melt_csv("x,y\n,NA,\"\",''", na = "NA")
#> # A tibble: 6 × 4
#>     row   col data_type value
#>   <dbl> <dbl> <chr>     <chr>
#> 1     1     1 character "x"  
#> 2     1     2 character "y"  
#> 3     2     1 empty     ""   
#> 4     2     2 missing    NA  
#> 5     2     3 empty     ""   
#> 6     2     4 character "''" 

# File types ----------------------------------------------------------------
melt_csv("a,b\n1.0,2.0")
#> # A tibble: 4 × 4
#>     row   col data_type value
#>   <dbl> <dbl> <chr>     <chr>
#> 1     1     1 character a    
#> 2     1     2 character b    
#> 3     2     1 double    1.0  
#> 4     2     2 double    2.0  
melt_csv2("a;b\n1,0;2,0")
#> Warning: `melt_csv2()` was deprecated in readr 2.0.0.
#> ℹ Please use `meltr::melt_csv2()` instead
#> ℹ Using "','" as decimal and "'.'" as grouping mark. Use `read_delim()` for more control.
#> # A tibble: 4 × 4
#>     row   col data_type value
#>   <dbl> <dbl> <chr>     <chr>
#> 1     1     1 character a    
#> 2     1     2 character b    
#> 3     2     1 double    1,0  
#> 4     2     2 double    2,0  
melt_tsv("a\tb\n1.0\t2.0")
#> Warning: `melt_tsv()` was deprecated in readr 2.0.0.
#> ℹ Please use `meltr::melt_tsv()` instead
#> # A tibble: 4 × 4
#>     row   col data_type value
#>   <dbl> <dbl> <chr>     <chr>
#> 1     1     1 character a    
#> 2     1     2 character b    
#> 3     2     1 double    1.0  
#> 4     2     2 double    2.0  
melt_delim("a|b\n1.0|2.0", delim = "|")
#> Warning: `melt_delim()` was deprecated in readr 2.0.0.
#> ℹ Please use `meltr::melt_delim()` instead
#> # A tibble: 4 × 4
#>     row   col data_type value
#>   <dbl> <dbl> <chr>     <chr>
#> 1     1     1 character a    
#> 2     1     2 character b    
#> 3     2     1 double    1.0  
#> 4     2     2 double    2.0  
源代碼:R/melt_delim.R

相關用法


注:本文由純淨天空篩選整理自Hadley Wickham等大神的英文原創作品 Return melted data for each token in a delimited file (including csv & tsv)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。