Как вы читаете в нескольких файлах .txt в R?

Я использую R для визуализации некоторых данных, все из которых находятся в формате .txt. В каталоге есть несколько сотен файлов, и я хочу загрузить их в одну таблицу за один снимок.

Любая помощь?

РЕДАКТИРОВАТЬ:

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

all.the.data <- lapply( all.the.files, txt , header=TRUE) 

поговорка

  Error in match.fun(FUN) : object 'txt' not found 

Любые fragmentы кода, которые могли бы прояснить эту проблему, получили бы большую оценку.

Вы можете попробовать следующее:

 filelist = list.files(pattern = ".*.txt") #assuming tab separated values with a header datalist = lapply(filelist, function(x)read.table(x, header=T)) #assuming the same header/columns for all files datafr = do.call("rbind", datalist) 

Посмотрите на помощь для функций dir() aka list.files() . Это позволяет получить список файлов, которые можно фильтровать с помощью регулярных выражений, по которым вы могли бы зацикливаться.

Если вы хотите, чтобы все сразу, вам сначала нужно иметь контент в одном файле. Один из вариантов заключается в использовании cat для ввода всех файлов в stdout и чтения с использованием popen() . Дополнительную информацию см. В help(Connections) .

Спасибо за ответы на все вопросы!

Между тем, я также взломал метод самостоятельно. Дайте мне знать, если это полезно:

 library(foreign) setwd("/path/to/directory") files <-list.files() data <- 0 for (f in files) { tempData = scan( f, what="character") data <- c(data,tempData) } 

Существует два быстрых способа чтения нескольких файлов и их размещение в единый фрейм данных или data.table

Использование fread из пакета data.table

  # List all txt files including sub-folders list_of_files <- list.files(path = ".", recursive = TRUE, pattern = "\\.txt$", full.names = TRUE) library(data.table) # Read all the files and create a FileName column to store filenames DT <- rbindlist( sapply(list_of_files, fread, simplify = FALSE), use.names = TRUE, idcol = "FileName" ) 

Использование purrr::map_df и readr::read_table2 из tidyverse package:

  library(tidyverse) # Read all the files and create a FileName column to store filenames df <- list_of_files %>% set_names(.) %>% map_df(read_table2, .id = "FileName") 

Примечание. Чтобы очистить имена файлов, используйте функции basename или gsub

Существует действительно простой способ сделать это сейчас: пакет readtext .

 readtext::readtext("path_to/your_files/*.txt") 

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

  • R: преобразовать строку с разделителями в переменные
  • R подавляет запуск сообщений от зависимости
  • Альтернатива expand.grid для data.frames
  • Как преобразовать таблицу в кадр данных
  • Lapply для добавления столбцов в каждый Dataframe в списке
  • Стандартный способ удаления нескольких элементов из фрейма данных
  • Настройка прокси для R
  • Разделите аргументы `...` и распределите по нескольким функциям
  • Среднее значение для каждого элемента списка матриц
  • Явное вызов return в функции или нет
  • Почему некоторые символы Юникода отображаются в matrixх, но не в кадрах данных в R?
  • Давайте будем гением компьютера.