Добавить имена файлов в качестве имени строки на основе условия с R - PullRequest
0 голосов
/ 12 сентября 2018

Я нашел несколько вариантов этого вопроса и перепробовал все возможности, но это не помогает.Мне удалось просто извлечь содержимое, но я хотел бы, чтобы имя файла также ассоциировалось с каждой строкой в ​​файле CSV: если содержимое («Flash Point») найдено в файле «.txt», извлеките содержимое иукажите имя файла «.txt» в качестве имени связанной строки в csv.Если содержимое не найдено, просто пропустите содержимое и файл и перейдите к следующему извлечению.Любая помощь будет принята с благодарностью.Проблема здесь в том, что имена строк задаются в зависимости от конкретного условия.Вот исходный код.Большое спасибо за вашу помощь

for (i in 1:length(txt)){
  doc<-readLines(txt[i])
  doc<-doc[grepl("Flash point",doc)]
  lst[[txt[[i]]]]<-doc %>% stringr::str_extract("(\\d|>).*")
  results<-lst[[txt[[i]]]]
  write.table(results,file = "outputestrod.csv",row.names = FALSE,col.names = FALSE,sep = ",", append = TRUE)
}

Я добавляю пример здесь Содержимое извлечено Содержимое извлечено с именами файлов В виде строки, если найдено определенное значение содержимого

Результат предложенного results<-paste(txt[i],lst[[txt[[i]]]]) Результат

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Вот краткая версия того, что, я думаю, вы пытаетесь сделать.Рассмотрим ресурс http://r4ds.had.co.nz/, если вы хотите научиться кодировать, как это.Ваш цикл не использует векторные операции R.

library(tidyverse)

filenames <- dir(your folder)

file_and_content_with_string <- function(filename, string){
  doc<-readLines(filename)
  doc<-doc[grepl(string,doc)]
  file_text <- doc %>% stringr::str_extract("(\\d|>).*")
  results <- data.frame(filename = filename, content = file_text)
}

all_results <- map_df(filenames, function(x) file_and_content_with_string(x, "Flash point")) 

write_csv(all_results, "outputestrod.csv")
0 голосов
/ 12 сентября 2018

Похоже, вам нужно использовать команду paste () для объединения двух строк, имени файла и содержимого файла.

Попробуйте изменить строку

results<-lst[[txt[[i]]]] 

на эту:

results<- paste(txt, lst[[txt[[i]]]] )
...