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


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