FF в R: нет применимого метода для 'recodeLevels'

Я пытаюсь загрузить огромный (~5 ГБ) файл.csv в R, используя read.csv.ffdf. Команда идет:

npi <- read.csv.ffdf(file="C:/Users/DSA/Dropbox/Team Shared Files/People/Ross/NPI_Parse/Zips/npi_full.csv", VERBOSE=TRUE, first.rows=10000,next.rows=100000,colClasses=NA)

Команда выполняется некоторое время, а затем выдает следующую ошибку: "нет применимого метода для 'recodeLevels', примененного к объекту класса" c ('double', 'numeric'). "Некоторые поиски показывают, что мне нужно использовать transFUN вариант, но я не знаю, как его применить. Данные представляют собой как текст, так и цифры, и я думаю, что это может вызвать проблемы. Я могу загрузить снимок экрана csv, если это помогает, но требуется много времени, чтобы открыть в LibreOffice.

Кто-нибудь знает какие-нибудь хитрости?

1 ответ

Решение

Из документации read.csv.ffdf,

transFUN: NULL или функция, которая вызывается для каждого блока data.frame после чтения с помощью FUN и перед дальнейшей обработкой (для фильтрации, преобразования и т. д.)

Если один из ваших столбцов меняется с фактора на числовой или наоборот, убедитесь, что это фактор с использованием transFUN

npi <- read.csv.ffdf(
  file="C:/Users/DSA/Dropbox/Team Shared Files/People/Ross/NPI_Parse/Zips/npi_full.csv",
  VERBOSE=TRUE, first.rows=10000,next.rows=100000, 
  transFUN=function(x){
    x$yourcolumnwiththeerror <- factor(as.character(x$yourcolumnwiththeerror))
    x
  })
Другие вопросы по тегам