Как да четем текстов файл в R като един ред

Опитвам се да обработя текстов файл. Като цяло имам корпус, който бих искал да анализирам. За да използвам пакета tm (пакет за копаене на текст в R), за да създам обект на Corpus, трябва да направя този абзац да се превърне в един гигантски вектор, за да се чете правилно.

Имам параграф

          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)

задаване на достатъчно голям брой знаци (100 000 в този случай).

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