Используя as.data.table, получение ошибки "не может привести класс" "integer64" "к data.frame" - PullRequest
1 голос
/ 07 апреля 2019

У меня есть столбец номеров идентификаторов участков, который data.table::fread читается как целое число64.Несколько месяцев назад он выдавал ошибки, поэтому я конвертировал в символы, но после того, как он прекратил выдавать ошибки, я не увидел недостатка в том, чтобы оставить все как есть.Но после некоторой обработки с пакетом sp я пытался вернуться из SpatialPointsDataFrame обратно в data.table с x <- as.data.table(x) и получил:

Error in as.data.frame.default(x[[i]], optional = TRUE) : 
  cannot coerce class ""integer64"" to a data.frame

Чтение в качестве символа - это согласованная рекомендация здесь .Но я пытаюсь понять, что происходит.Это могли быть номера, а не идентификаторы.Похоже, sp::coordinates может принимать целочисленные 64 числа из data.table в свой собственный тип фрейма данных, но оттуда это улица с односторонним движением?

РЕДАКТИРОВАТЬ: Я собирался сделать traceback() и т. Д., Предложенные @MichaelChirico в комментариях, понял, что R висит после сообщения об ошибке, решил попробовать на небольшом примере.К моему удивлению, это сработало без ошибок / предупреждений.Пока что самая большая отдельная таблица, в которую я добавил пространственные данные и преобразовал обратно, содержала около 2,25 миллионов строк.Я продолжал увеличивать размер выборки, чтобы увидеть, где она сломается.Конечным результатом была (для меня) сумеречная зона - я смог преобразовать весь SPDF, если бы я рандомизировал строки, а если нет!https://imgur.com/aghsdDA Это не «решение», поэтому я оставлю это здесь для кого-то, кто знает, что происходит под капотом.

EDIT_2: заменено встроенное иллюстративное изображение в предыдущем редактировании нассылка.Ссылка на 12-мегабайтный файл SPDF: здесь .Интересующая переменная представляет собой целое число 64 «Prop» - см. Выше;пытаясь вернуться из SPDF обратно в data.table.Воспроизводимый на моем Mac 10.10.5, под управлением Rstudio v1.1.453 на R v3.3.3, пакеты data.table v1.10.4-3 и sp v1.3-1.Замените PATH_TO_FILE указанным ниже местоположением загрузки:

x <- readRDS("PATH_TO_FILE/x_SPDF.rds")

z <- x[sample(nrow(x), 2535323),] # all rows but randomized
z <- as.data.table(z) # works
x1 <- x[1:2535322, ] # un-randomized subset w/ nrow() minus 1
x1 <- as.data.table(x1) # works
x <- as.data.table(x) # stops with error noted in initial question

Находясь на старом компьютере, Mac может иметь к этому какое-то отношение, но я понимаю, работает ли он на подмножествахи рандомизированные подмножества любого размера, это должно работать в целом.

...