Как прочитать текстовый файл в R как одну строку

Я пытаюсь обработать текстовый файл. В целом у меня есть корпус, который я хотел бы проанализировать. Чтобы использовать пакет tm (пакет анализа текста в R) для создания объекта Корпуса, мне нужно сделать этот абзац одним гигантским вектором, чтобы его можно было правильно прочитать.

у меня есть абзац

          Commercial exploitation over the past two hundred years drove                  
          the great Mysticete whales to near extinction.  Variation in                   
          the sizes of populations prior to exploitation, minimal                        
          population size during exploitation and current population                     
          sizes permit analyses of the effects of differing levels of                    
          exploitation on species with different biogeographical                         
          distributions and life-history characteristics.

Я использовал методы scan и readLine, и он обрабатывает текст следующим образом:

[28] "коммерческая эксплуатация за последние двести лет привела"
[29] "больших китов-усатых китов к почти полному исчезновению"
[30] "размеры популяций до начала эксплуатации минимальны"

Есть ли способ избавиться от разрывов строк? Или читать текстовый файл как один гигантский вектор?

Все опубликованные решения до сих пор были отличными, спасибо.


person Zaynaib Giwa    schedule 07.12.2014    source источник
comment
не очень хорошо знаком с R, но не можете ли вы перебрать строки и добавить их к одному строковому типу данных.   -  person krammer    schedule 07.12.2014
comment
Я новичок в R. Я знаю, что многие люди используют функции применения для выполнения циклов. Я могу попробовать ваши предложения. Спасибо за хорошую идею.   -  person Zaynaib Giwa    schedule 07.12.2014
comment
@krammer, поэтому я еще немного поискал, проверьте ссылку, а также ссылка   -  person Zaynaib Giwa    schedule 07.12.2014
comment
Вы можете использовать readChar   -  person Rich Scriven    schedule 07.12.2014
comment
Почему вы хотите это сделать? Строка из одного символа, мягко говоря, громоздка.   -  person Carl Witthoft    schedule 07.12.2014
comment
Более ранняя версия этого вопроса на самом деле лучше описывала, почему это была разумная стратегия.   -  person IRTFM    schedule 07.12.2014
comment
@BondeDust Хорошо, я отредактирую вопрос. Я изменил его, потому что подумал, что неправильно сформулировал вопрос.   -  person Zaynaib Giwa    schedule 07.12.2014
comment
Спасибо за объяснение.   -  person Carl Witthoft    schedule 07.12.2014


Ответы (3)


Если над файлом нужно выполнить слишком много действий, его чтение может занять много времени. Вы можете прочитать его без изменений, а затем внести изменения. В пакете stringi есть функция для этой конкретной операции. И авторы пишут на C, поэтому их функции красивы и быстры.

Предположим, вы прочитали файл и назвали его txt,

library(stringi)
stri_flatten(txt)
# [1] "          Commercial exploitation over the past two hundred years drove                  \n          the great Mysticete whales to near extinction.  Variation in                   \n          the sizes of populations prior to exploitation, minimal                        \n          population size during exploitation and current population                     \n          sizes permit analyses of the effects of differing levels of                    \n          exploitation on species with different biogeographical                         \n          distributions and life-history characteristics."

И строка все еще в том же формате, только сплющенная. Чтобы проверить это, мы можем посмотреть на cat

cat(stri_flatten(txt))
          Commercial exploitation over the past two hundred years drove                  
          the great Mysticete whales to near extinction.  Variation in                   
          the sizes of populations prior to exploitation, minimal                        
          population size during exploitation and current population                     
          sizes permit analyses of the effects of differing levels of                    
          exploitation on species with different biogeographical                         
          distributions and life-history characteristics.
person Rich Scriven    schedule 07.12.2014
comment
Спасибо Ричард! Я не знал, что существует пакет stringi. - person Zaynaib Giwa; 07.12.2014
comment
@ user3426338 - я бы проверил. На изучение функций уйдет минута, так как их довольно много, все они молниеносно работают. - person Rich Scriven; 09.12.2014
comment
Спасибо. Я решил просто сделать это с помощью командной строки Linux. У меня есть около 5700 файлов для предварительной обработки, и это был самый простой способ Ссылка Но это хорошее знание на будущее. - person Zaynaib Giwa; 09.12.2014

У меня была такая же проблема некоторое время назад, и я нашел обходной путь: прочитать отдельные строки, а затем вставить их вместе, удалив символы новой строки "\n":

filename <- "tmp.txt"
paste0(readLines(filename),collapse=" ")

Если вам нужны новые строки, вы можете прочитать файл как строку символов

readChar(filename,1e5)

указав достаточно большое количество символов (в данном случае 100000).

person renato vitolo    schedule 07.12.2014

Это прочитает весь файл в вектор длины один символ.

x <- readChar(file, file.info(file)$size)

person Jim    schedule 07.12.2014
comment
Это решение звучит очень хорошо. Однако как вы можете записать тот же вывод в файл? Я использовал команду write, и после каждой строки с текстом у нее была бы пустая строка. - person Jd Baba; 18.11.2017
comment
@JaneshDevkota, чтобы записать вектор символов в файл, попробуйте использовать cat, например. cat(charVector, file = "textfile.txt", append = F, fill = F). Когда append имеет значение false, файл будет перезаписан. Если fill равно false, новые строки или символы возврата каретки не добавляются (включая EOL и EOF), что может быть проблемой для некоторых программ. Но все управление в ваших руках - person Chris Njuguna; 01.05.2018