Объединить различные файлы .txt и. html в один файл .txt в R - PullRequest
0 голосов
/ 12 января 2020

Я пытаюсь написать скрипт, который автоматически объединяет все файлы из указанных c папок автоматически в один файл .txt, но у меня возникают проблемы, потому что я пытаюсь объединить их в один большой фрейм данных перед записью в текстовый файл, и я получаю ошибки, потому что имена столбцов не совпадают, поэтому я использовал smartbind, но не получаю ошибку для «двойных имен строк».

Вот мой код:

library(gtools)

dir<-"/Users/max/Desktop/NISAT_All/Regions"

subdir_list<-list.dirs(dir, recursive=F) 
subdir_list<-list.dirs(subdir_list,  recursive=F)
as.matrix(subdir_list)
subdirs_General <- subdir_list[ grepl("General", subdir_list) ]
as.matrix(subdirs_General)
subdir_list <- subdir_list[ !grepl("General", subdir_list) ]
subdir_list<-list.dirs(subdir_list,  recursive=F)
as.matrix(subdir_list)


for (subdir in subdir_list){

  setwd(subdir)

  subdir <-list.files(subdir, recursive=T)
  files <- subdir[ grepl("Armed Groups and Small Guns", subdir) ]
  files <- c(files, subdir[ grepl("Arms Embargoes", subdir) ])
  files <- c(files, subdir[ grepl("Black Market", subdir) ])
  files <- c(files, subdir[ grepl("Brokering", subdir) ])
  files <- c(files, subdir[ grepl("Landmines", subdir) ])
  files <- c(files, subdir[ grepl("MANPADS", subdir) ])
  files <- c(files, subdir[ grepl("Production", subdir) ])
  files <- c(files, subdir[ grepl("Stockpile Security and Destruction", subdir) ])
  files <- c(files, subdir[ grepl("UN Processes", subdir) ])
  files <- c(files, subdir[ grepl("United Nations", subdir) ])
  files <- c(files, subdir[ grepl("Weapons Collection and Amnesties", subdir) ])

  dataframe <- data.frame()

  for (file in files){

      df_temp <- read.delim(file)
      dataframe <- smartbind(dataframe, df_temp, sep="\n")

  }
  #then write your final file
  write.table(dataframe,"MergedFiles.txt",sep="\n", row.names = F, eol = "\r")
  rm(dataframe)

}

на картинке видно, как обычно выглядят файлы, я просто хочу объединить их в один

Может кто-нибудь помочь?

that's what the files usually look like

here's the latest error message

1 Ответ

0 голосов
/ 12 января 2020

Предположим, у меня есть два текстовых файла для слияния:

test1.txt

I'm not a pheasant plucker, I'm a pheasant plucker's son

test2.txt

and I'm only plucking pheasants til the pheasant plucker comes.

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

files_to_combine <- c(path.expand("~/test1.txt"), path.expand("~/test2.txt"))
combined <- ""

Теперь я просто использую readLines(), чтобы получить содержимое и вставьте их вместе.

for (i in seq_along(files_to_combine))
{
  combined <- paste0(combined,  readLines(files_to_combine[i], "\n")
}

Наконец, я записываю результат обратно на диск следующим образом:

writeLines(combined, path.expand("~/test3.txt"))

Теперь в моем домашнем каталоге у меня есть этот файл:

test3.txt

I'm not a pheasant plucker, I'm a pheasant plucker's son
and I'm only plucking pheasants til the pheasant plucker comes.

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