Я прочитал о различиях между ожидаемым и ожидаемым.
При этом у меня есть функция, которая создает таблицу данных, которая выглядит следующим образом:
Thing1 Thing2 Thing3
Thing1 34.6 23.4 54.2
Thing2 34.7 33.2 32.1
Thing3 32.7 33.5 33.8
structure(list(` ` = c("Thing1", "Thing2", "Thing3"), `Thing1` = c(34.6,
34.7, 32.7), `Thing2` = c(32.4, 33.2, 33.5), `Thing3` = c(33,
32.1, 33.8)), .Names = c(" ", "Thing1", "Thing2", "Thing3"), row.names = c(NA,
-3L), class = c("data.table", "data.frame"))
Давайте назовем этостол output
.Я сохраняю этот data.table в .rds, затем перезагружаю его с помощью readRDS.Эта новая таблица называется test
.Структура неизменна, и отличаются только указатели.Несмотря на это, выполнение identical(test, output)
дает false.Опять же, структуры идентичны ожидаемому для указателя.Все классы одинаковы.
Однако, это: identical(as.data.table(test), output)
дает TRUE
.Кто-нибудь знает, что здесь происходит?Это не простая проблема класса.Я в растерянности.
Вы можете воссоздать эту проблему самостоятельно, выполнив что-то вроде:
x <- as.data.table(mtcars)
saveRDS(x, "~/test.rds")
y <- readRDS("~/test.rds")
str(x)
str(y)
identical(x, y)
ОБНОВЛЕНИЕ
Я проверил mem_change()
на обоих объектах, и это разные.Однако object.size()
- это то же самое.