在R中打印文本文件的前几行

sie*_*ste 5 r tidyverse

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

some text on line 1
some more text on line 2
even more text on the third line
etc
Run Code Online (Sandbox Code Playgroud)

从这个文件到控制台打印出前几行(比方说2行)文本的最优雅和R类似的方法是什么?

选项1:readLines

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

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
Run Code Online (Sandbox Code Playgroud)

这种输出格式是我想看到什么,但一个选项来限制的行数,如n=2readLines,缺少.

选项3:system('head')

system('head -n2 file.txt')
# some text on line 1
# some more text on line 2
Run Code Online (Sandbox Code Playgroud)

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

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

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

G. *_*eck 5

使用writeLinesreadLines

writeLines(readLines("file.txt", 2))
Run Code Online (Sandbox Code Playgroud)

给予:

some text on line 1
some more text on line 2
Run Code Online (Sandbox Code Playgroud)

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

library(magrittr)

"file.txt" %>% readLines(2) %>% writeLines
Run Code Online (Sandbox Code Playgroud)