Чтение файлов в цикле по части их имени для создания новой переменной в большом объединенном фрейме данных с использованием fread (cmd = ...) и rbindlist - PullRequest
0 голосов
/ 13 июня 2019

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

require(data.table)

filelist <- list.files(path="mywd")

df <- data.frame()

for (i in 1:length(filelist)){

      tempdata <-fread(filelist[i], stringASFactors = FALSE, colClasses = list(character = 13))

      setattr(tempdata,'YEAR', c(i+2002))

      df <- rbindlist(list(df, tempdata), use.names = T, idcol = "YEAR")
}

Я получаю несколько ошибок, говорящих:

Принимая input = как системную команду ('имя файла') и переменная была использована в выражении, переданном input=.Пожалуйста, используйте fread (cmd = ...) .Существует проблема безопасности, если вы создаете приложение, и приложение может передать злонамеренного пользователя, и приложение не работает в защищенной среде;Например, приложение работает от имени пользователя root.Пожалуйста, прочитайте пункт 5 в файле NEWS для v1.11.6 для получения дополнительной информации и для возможности подавления этого сообщения.

Я не знаю, где искать NEWS и не может работать опция cmd,Имена файлов выглядят как «ГГГГ один два три с four.dsv». Заранее благодарю за помощь!:)

ОБНОВЛЕНИЕ Я немного поиграл с опцией cmd для fread () .Мне не удалось решить мою проблему, но, возможно, я в правильном направлении.

Пытаюсь приспособиться к имени файла с пробелами "YYYY один два три с four.dsv"

require(data.table)

filelist <- list.files(path="mywd")

df <- data.frame()

for (i in 1:length(filelist)){

      tempdata <-fread(sprintf('%4d one two three with four.dsv', i+2002), stringASFactors = FALSE, colClasses = list(character = 13))

      setattr(tempdata,'YEAR', c(i+2002))

      df <- rbindlist(list(df, tempdata), use.names = T, idcol = "YEAR")
}

Что дает новое сообщение об ошибке для каждого года:

'2003' не распознается как внутренняя или внешняя команда, работающая программа или пакетный файл.

И warnings () говорят, что выполнение не удалось с кодом ошибки 1.

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