У меня есть столбец с номерами идентификаторов посылок, которые data.table::fread
читаются как integer64. Несколько месяцев назад он выдавал ошибки, поэтому я конвертировал его в персонажа, но после того, как он перестал выдавать ошибки, я не видел недостатков в том, чтобы оставить все как есть. Но после некоторой обработки с пакетом 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
Чтение в качестве символа является общепринятой рекомендацией -integer-id-n#35172059">здесь. Но я пытаюсь понять, что происходит. Это могли быть номера, а не идентификаторы. Похоже, что sp::coordinates
может принимать целые 64 числа из data.table в свой собственный тип фрейма данных, но оттуда это улица с односторонним движением?
РЕДАКТИРОВАТЬ: я собирался сделать traceback()
и т. д., предложенный @MichaelChirico в комментариях, понял, что R зависает после сообщения об ошибке, решил попробовать небольшой образец. К моему удивлению, он работал без ошибок/предупреждений. До сих пор самая большая отдельная таблица, в которую я добавлял пространственные данные и преобразовывала их обратно, содержала около 2,25 миллиона строк. Я продолжал увеличивать размер выборки, чтобы увидеть, где она сломается. Конечным результатом была (для меня) сумеречная зона - я смог преобразовать весь SPDF, если я рандомизировал строки, а если нет! https://imgur.com/aghsdDA Это не "решение", поэтому я оставлю это здесь для тех, кто знает, что происходит под капотом.
EDIT_2: встроенное иллюстративное изображение в предыдущем редактировании заменено ссылкой. Ссылка на файл SPDF размером 12 МБ находится здесь. Интересующая переменная - целое число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 может иметь какое-то отношение к этому, но я полагаю, что если он работает с подмножествами и рандомизированными подмножествами любого размера, он должен работать в целом.
bit64
. - person MichaelChirico   schedule 07.04.2019traceback()
и/илиdebugonce(as.data.frame.default)
илиdebugonce(as.data.table)
- person MichaelChirico   schedule 07.04.2019dput(head(x))
) и ожидаемый результат. Ссылки: stackoverflow.com/questions/5963269, stackoverflow.com/help/mcve и stackoverflow.com/tags/r/info. - person r2evans   schedule 08.04.2019