微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 RStudio 中迭代文本时,我可以跳过直到到达某一行吗?

如何解决在 RStudio 中迭代文本时,我可以跳过直到到达某一行吗?

我正在使用 read.delim() -&- read.delim2() 方法读取文本数据。他们接受一个 skip 参数,但它适用于行数,(即它跳过你传递给它的行 2,3,4,100)。

我正在使用这些方法...

read.delim()

read.delim2()

...读取文本数据。因此,上述方法可以跳过行;这些方法一个skip 参数,该参数接受一个行号数组作为参数。 读取器方法会跳过所有传递给skip-parameter行号(即读取器不会读取这些行)方法).

我想遍历文本正文,跳过每一行,直到到达特定行。有谁知道如何做到这一点?

解决方法

你不能在基本的 R 函数中做到这一点,而且我不知道直接提供的包。但是,这里有两种方法可以获得效果。

首先,一个名为 file.txt 的文件:

I want to skip this
and this too
Absolute Irradiance
I need this line
txt <- readLines("file.txt")
txt[cumany(grepl("Absolute Irradiance",txt))]
# [1] "Absolute Irradiance" "I need this line"   

如果您不想要“Irradiance”行但想要其后的所有内容,则添加 [-1] 以删除返回的第一行:

txt[cumany(grepl("Absolute Irradiance",txt))][-1]
# [1] "I need this line"

如果文件比较大,不想全部读入R,那么

system2("sed",c("-ne","'/Absolute Irradiance/,$p'","file.txt"),stdout = TRUE)
# [1] "Absolute Irradiance" "I need this line"   

这第二种技术真的不是那么好……最好将它从 file.txt 运行到第二个(临时)文件中,然后直接运行 readLines("tempfile.txt")

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。