在R

时间:2018-05-02 10:20:18

标签: r tidyverse

我有一个没有明显表格或其他结构的文本文件,例如内容

some text on line 1
some more text on line 2
even more text on the third line
etc

将此文件中的前几行(比方说2行)打印到控制台,最优雅,最像R的方法是什么?

选项1 readLines

readLines('file.txt', n=2)
# [1] "some text on line 1"      "some more text on line 2"

n=2选项很有用,但我想要原始文件内容,而不是单独的行作为向量的元素。

选项2 file.show

file.show('file.txt')
# some text on line 1
# some more text on line 2
# even more text on the third line
# etc

我希望看到此输出格式,但缺少限制行数的选项,例如n=2中的readLines

选项3 system('head')

system('head -n2 file.txt')
# some text on line 1
# some more text on line 2

这正是我想要获得的输出,但我不确定这是否适用于所有平台,并且为这么简单的任务调用外部命令有点尴尬。

可以将readLines解决方案与粘贴和 cat结合起来格式化输出,但这似乎过多了。像file.head这样的简单命令会很好,或n=2中的file.show参数,但两者都不存在。在R中实现这一目标的最优雅和最紧凑的方法是什么?

为了澄清这里的目标:这是为了编写R教程,其中的叙述类似于" ...我们现在已经将数据写入新的文本文件,所以让我们来看看。通过查看前两行来看看它是否有效..."。在这一点上,一个简单而紧凑的R表达式,使用base( update :或tidyverse)函数来完成这一操作非常有用。

1 个答案:

答案 0 :(得分:4)

writeLinesreadLines

一起使用
writeLines(readLines("file.txt", 2))

,并提供:

some text on line 1
some more text on line 2

这可以替代地写为以下管道。它给出了相同的输出:

library(magrittr)

"file.txt" %>% readLines(2) %>% writeLines