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


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