我有一个没有明显表格或其他结构的文本文件,例如内容
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
)函数来完成这一操作非常有用。
答案 0 :(得分:4)
将writeLines
与readLines
:
writeLines(readLines("file.txt", 2))
,并提供:
some text on line 1
some more text on line 2
这可以替代地写为以下管道。它给出了相同的输出:
library(magrittr)
"file.txt" %>% readLines(2) %>% writeLines