readr::read_lines:空 *txt 文件的行长度结果问题

Posted

技术标签:

【中文标题】readr::read_lines:空 *txt 文件的行长度结果问题【英文标题】:readr::read_lines: Problem with lines length result for empty *txt files 【发布时间】:2020-11-03 19:09:45 【问题描述】:

我有 4K *txt 文件,其中行数很重要,因为如果我的 *txt 文件为空,则需要计数为零,如果我有 1 行或更多行,则此信息也很重要。 但是readr 包中的函数read_lines 总是给我1行我有一个空文件,在我的例子中:

library(tidyverse)

# *txt file with 1 line
myfile1<-read_lines("https://raw.githubusercontent.com/Leprechault/trash/main/sample_672.txt")
length(myfile1)
#[1] 1
myfile1
#[1] "0 0.229592 0.382716 0.214286 0.246914"

# *txt file with 0 line
myfile2<-read_lines("https://raw.githubusercontent.com/Leprechault/trash/main/sample_1206.txt")
length(myfile2)
#[1] 1
myfile2
#[1] ""

在 myfile1 中是可以的,因为我有 1 行,但在第二种情况下 (myfile2) 我没有一行并且文件是空的。请问,这个问题怎么解决?

【问题讨论】:

【参考方案1】:

您可以使用基础 R 中的readLines()。它已经具有正确的行为。

【讨论】:

【参考方案2】:

您可以将read_lines() 放在一个包装函数中,该函数可以执行您想要的操作...

rl <- function(...) 
    x <- read_lines(...)
    if (identical(x,"")) return(character(0))
    return(x)


rl("https://raw.githubusercontent.com/Leprechault/trash/main/sample_1206.txt")  
## character(0)

【讨论】:

以上是关于readr::read_lines:空 *txt 文件的行长度结果问题的主要内容,如果未能解决你的问题,请参考以下文章

Qt:从项目资源中打开的 .txt 文件的 QFile 的空内容

怎样把多个TXT文档合并成一个,并且以每个文档为单位空一行?

使用python读取txt坐标文件生成挖空矿山_采矿批量

使用python读取txt坐标文件生成挖空矿山_探矿批量

linux中文件处理命令

Office表中如何把一定范围单元格的内容多列数据去除空值以TXT文本方式导出?