Распечатать первые несколько строк текстового файла в R - PullRequest
0 голосов
/ 02 мая 2018

У меня есть текстовый файл без видимой табличной или другой структуры, например, с содержимым

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

Какой самый элегантный и R-подобный способ вывести первые (скажем, 2) строки текста из этого файла в консоль?

Вариант 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, использующее базовые ( update : или tidyverse) функции, чтобы сделать именно это, было бы очень полезно.

1 Ответ

0 голосов
/ 02 мая 2018

Используйте 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...