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


R readr read_lines 从文件中读取/写入行


read_lines() 从文件中读取最多 n_max 行。新行不包含在输出中。 read_lines_raw() 生成原始向量列表,对于处理未知编码的数据很有用。 write_lines() 采用字符向量或原始向量列表,在每个条目后附加一个新行。

用法

read_lines(
  file,
  skip = 0,
  skip_empty_rows = FALSE,
  n_max = Inf,
  locale = default_locale(),
  na = character(),
  lazy = should_read_lazy(),
  num_threads = readr_threads(),
  progress = show_progress()
)

read_lines_raw(
  file,
  skip = 0,
  n_max = -1L,
  num_threads = readr_threads(),
  progress = show_progress()
)

write_lines(
  x,
  file,
  sep = "\n",
  na = "NA",
  append = FALSE,
  num_threads = readr_threads(),
  path = deprecated()
)

参数

file

文件路径、连接或文字数据(单个字符串或原始向量)。

.gz.bz2.xz.zip 结尾的文件将自动解压缩。将自动下载以 http://https://ftp://ftps:// 开头的文件。远程gz文件也可以自动下载并解压。

文字数据对于示例和测试最有用。要被识别为文字数据,输入必须用 I() 包装,是包含至少一个换行符的字符串,或者是至少包含一个带有换行符的字符串的向量。

使用值 clipboard() 将从系统剪贴板读取。

skip

读取数据之前要跳过的行数。

skip_empty_rows

空白行应该被完全忽略吗?即,如果此选项是TRUE,则根本不会表示空白行。如果是FALSE,则它们将由所有列中的NA 值表示。

n_max

要读取的行数。如果n_max为-1,则将读取文件中的所有行。

locale

区域设置控制默认值因地而异。默认区域设置为 US-centric(如 R),但您可以使用 locale() 创建自己的区域设置来控制默认时区、编码、小数标记、大标记和日/月名称等内容。

na

要解释为缺失值的字符串的字符向量。将此选项设置为 character() 以指示没有缺失值。

lazy

懒惰地读取值?默认情况下,这是 FALSE ,因为延迟读取文件时有一些特殊的考虑因子,这导致了一些用户的错误。具体来说,读取然后写回同一个文件时,事情会变得很棘手。但是,一般来说,惰性读取 ( lazy = TRUE ) 有很多好处,特别是对于交互式使用以及当您的下游工作仅涉及行或列的子集时。

should_read_lazy()vroom::vroom()altrep 参数的文档中了解更多信息。

num_threads

用于初始解析和延迟读取数据的处理线程数。如果您的数据在字段中包含换行符,解析器应自动检测到这一点并回退到仅使用一个线程。但是,如果您知道文件在带引号的字段中包含换行符,那么显式设置 num_threads = 1 是最安全的。

progress

显示进度条?默认情况下,它只会在交互式会话中显示,而不会在编织文档时显示。可以通过将选项 readr.show_progress 设置为 FALSE 来禁用自动进度条。

x

要写入磁盘的字符向量或原始向量列表。

sep

行分隔符。默认为 \\n ,常用于 macOS 和 Linux 等 POSIX 系统。对于本机窗口 (CRLF) 分隔符使用 \\r\\n

append

如果 FALSE ,将覆盖现有文件。如果 TRUE ,将追加到现有文件。在这两种情况下,如果文件不存在,则会创建新文件。

path

[Deprecated]使用file相反。

read_lines() :每行一个元素的字符向量。 read_lines_raw():包含每行原始向量的列表。

write_lines() 无形地返回 x

例子

read_lines(file.path(R.home("doc"), "AUTHORS"), n_max = 10)
#>  [1] "Authors of R."                                                                     
#>  [2] ""                                                                                  
#>  [3] "R was initially written by Robert Gentleman and Ross Ihaka—also known as \"R & R\""
#>  [4] "of the Statistics Department of the University of Auckland."                       
#>  [5] ""                                                                                  
#>  [6] "Since mid-1997 there has been a core group with write access to the R"             
#>  [7] "source, currently consisting of"                                                   
#>  [8] ""                                                                                  
#>  [9] "Douglas Bates"                                                                     
#> [10] "John Chambers"                                                                     
read_lines_raw(file.path(R.home("doc"), "AUTHORS"), n_max = 10)
#> [[1]]
#>  [1] 41 75 74 68 6f 72 73 20 6f 66 20 52 2e
#> 
#> [[2]]
#> raw(0)
#> 
#> [[3]]
#>  [1] 52 20 77 61 73 20 69 6e 69 74 69 61 6c 6c 79 20 77 72 69 74 74 65 6e
#> [24] 20 62 79 20 52 6f 62 65 72 74 20 47 65 6e 74 6c 65 6d 61 6e 20 61 6e
#> [47] 64 20 52 6f 73 73 20 49 68 61 6b 61 e2 80 94 61 6c 73 6f 20 6b 6e 6f
#> [70] 77 6e 20 61 73 20 22 52 20 26 20 52 22
#> 
#> [[4]]
#>  [1] 6f 66 20 74 68 65 20 53 74 61 74 69 73 74 69 63 73 20 44 65 70 61 72
#> [24] 74 6d 65 6e 74 20 6f 66 20 74 68 65 20 55 6e 69 76 65 72 73 69 74 79
#> [47] 20 6f 66 20 41 75 63 6b 6c 61 6e 64 2e
#> 
#> [[5]]
#> raw(0)
#> 
#> [[6]]
#>  [1] 53 69 6e 63 65 20 6d 69 64 2d 31 39 39 37 20 74 68 65 72 65 20 68 61
#> [24] 73 20 62 65 65 6e 20 61 20 63 6f 72 65 20 67 72 6f 75 70 20 77 69 74
#> [47] 68 20 77 72 69 74 65 20 61 63 63 65 73 73 20 74 6f 20 74 68 65 20 52
#> 
#> [[7]]
#>  [1] 73 6f 75 72 63 65 2c 20 63 75 72 72 65 6e 74 6c 79 20 63 6f 6e 73 69
#> [24] 73 74 69 6e 67 20 6f 66
#> 
#> [[8]]
#> raw(0)
#> 
#> [[9]]
#>  [1] 44 6f 75 67 6c 61 73 20 42 61 74 65 73
#> 
#> [[10]]
#>  [1] 4a 6f 68 6e 20 43 68 61 6d 62 65 72 73
#> 

tmp <- tempfile()

write_lines(rownames(mtcars), tmp)
read_lines(tmp, lazy = FALSE)
#>  [1] "Mazda RX4"           "Mazda RX4 Wag"       "Datsun 710"         
#>  [4] "Hornet 4 Drive"      "Hornet Sportabout"   "Valiant"            
#>  [7] "Duster 360"          "Merc 240D"           "Merc 230"           
#> [10] "Merc 280"            "Merc 280C"           "Merc 450SE"         
#> [13] "Merc 450SL"          "Merc 450SLC"         "Cadillac Fleetwood" 
#> [16] "Lincoln Continental" "Chrysler Imperial"   "Fiat 128"           
#> [19] "Honda Civic"         "Toyota Corolla"      "Toyota Corona"      
#> [22] "Dodge Challenger"    "AMC Javelin"         "Camaro Z28"         
#> [25] "Pontiac Firebird"    "Fiat X1-9"           "Porsche 914-2"      
#> [28] "Lotus Europa"        "Ford Pantera L"      "Ferrari Dino"       
#> [31] "Maserati Bora"       "Volvo 142E"         
read_file(tmp) # note trailing \n
#> [1] "Mazda RX4\nMazda RX4 Wag\nDatsun 710\nHornet 4 Drive\nHornet Sportabout\nValiant\nDuster 360\nMerc 240D\nMerc 230\nMerc 280\nMerc 280C\nMerc 450SE\nMerc 450SL\nMerc 450SLC\nCadillac Fleetwood\nLincoln Continental\nChrysler Imperial\nFiat 128\nHonda Civic\nToyota Corolla\nToyota Corona\nDodge Challenger\nAMC Javelin\nCamaro Z28\nPontiac Firebird\nFiat X1-9\nPorsche 914-2\nLotus Europa\nFord Pantera L\nFerrari Dino\nMaserati Bora\nVolvo 142E\n"

write_lines(airquality$Ozone, tmp, na = "-1")
read_lines(tmp)
#>   [1] "41"  "36"  "12"  "18"  "-1"  "28"  "23"  "19"  "8"   "-1"  "7"  
#>  [12] "16"  "11"  "14"  "18"  "14"  "34"  "6"   "30"  "11"  "1"   "11" 
#>  [23] "4"   "32"  "-1"  "-1"  "-1"  "23"  "45"  "115" "37"  "-1"  "-1" 
#>  [34] "-1"  "-1"  "-1"  "-1"  "29"  "-1"  "71"  "39"  "-1"  "-1"  "23" 
#>  [45] "-1"  "-1"  "21"  "37"  "20"  "12"  "13"  "-1"  "-1"  "-1"  "-1" 
#>  [56] "-1"  "-1"  "-1"  "-1"  "-1"  "-1"  "135" "49"  "32"  "-1"  "64" 
#>  [67] "40"  "77"  "97"  "97"  "85"  "-1"  "10"  "27"  "-1"  "7"   "48" 
#>  [78] "35"  "61"  "79"  "63"  "16"  "-1"  "-1"  "80"  "108" "20"  "52" 
#>  [89] "82"  "50"  "64"  "59"  "39"  "9"   "16"  "78"  "35"  "66"  "122"
#> [100] "89"  "110" "-1"  "-1"  "44"  "28"  "65"  "-1"  "22"  "59"  "23" 
#> [111] "31"  "44"  "21"  "9"   "-1"  "45"  "168" "73"  "-1"  "76"  "118"
#> [122] "84"  "85"  "96"  "78"  "73"  "91"  "47"  "32"  "20"  "23"  "21" 
#> [133] "24"  "44"  "21"  "28"  "9"   "13"  "46"  "18"  "13"  "24"  "16" 
#> [144] "13"  "23"  "36"  "7"   "14"  "30"  "-1"  "14"  "18"  "20" 
源代码:R/lines.R

相关用法


注:本文由纯净天空筛选整理自Hadley Wickham等大神的英文原创作品 Read/write lines to/from a file。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。