Как вы читаете в нескольких файлах .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
  • Выберите эквивалентные строки
  • Как мне назвать столбец имен строк в r
  • Что делает функция «pol» на самом деле?
  • promise уже оценивается: рекурсивный аргумент аргумента по умолчанию или более ранние проблемы?
  • Как узнать R как язык программирования?
  • Отменить список фреймов данных
  • Есть ли такой «colsd» в R?
  • Давайте будем гением компьютера.