Что является альтернативой функции scan () в R, которая не только для файлов - PullRequest
0 голосов
/ 28 мая 2018

Мне нужно прочитать список текстовых файлов, начинающихся с имени hello, которые находятся в той же папке.Я должен удалять точку после каждой буквы, потому что я хочу использовать только точку в качестве разделителей.

Например, если строка текста выглядит так: «яблоко.10. »

Я удаляю точку в той же строке, чтобы получить результат:« яблоко 10 ».

Вот проблеск моего кода.

 files0 <- list.files(path=maindir,pattern="hello",full.names=F,recursive=T,
 include.dirs=T)

Следующий цикл не очень эффективен, потому что мне нужно создавать временные текстовые файлы для использования функции scan ().

 ############### First step

for(a in 1:length(files0)){ #start of the loop going through 
# every files0

        read <- readLines(paste(maindir,files0[a],sep="/")) #read each line

        hello <- gsub("(\\D+)\\.","\\1", lec) #remove every period after a letter

        write.table(mod,file=paste(maindir,paste("temporary",files0[a],sep="_"),sep="/"),
        sep =     ";",col.names = T,row.names = F,quote = FALSE) 
        #create new temporary files without the period  after a letter

} #end of the loop

 ##################Second step

   files <- list.files(path=maindir,pattern="temporary",full.names=F,
   recursive=T,include.dirs=T)

   for(b in 1:length(files)){ #start of the loop going through every files

           hola <- scan(files[b],character(), sep=".") #read every files and 
           # use period as delimiters
   } #end of the loop

Я хотел бы найти альтернативу функции scan () в R, так как яне пришлось бы создавать временные файлы.Кроме того, я хотел бы иметь возможность напрямую использовать исходные файлы (files0) без их изменения.

Например, я пробовал функцию strsplit (), но она не правильно разграничивала мой текстовый файл, используяпериод.

Спасибо за вашу помощь.

1 Ответ

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

Я нашел альтернативу.

for(a in 1:length(files0)){ #start of the loop going through 
# every files0

    read <- readLines(paste(maindir,files0[a],sep="/")) #read each line

    hello <- gsub("(\\D+)\\.","\\1", lec) #remove every period after a letter

hello1 <- unlist(strsplit(hello, "[.]"))

} #end of the loop

Мне просто нужно использовать функции unlist (strsplit ()).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...