Сохранить тиббл со столбцами списка на диск

Я хотел бы сохранить на диск tibble у которого есть столбцы списка (для дальнейшего использования только внутри R). В идеале я хотел бы быстрый двоичный формат, как featherоднако, кажется, что он не поддерживает списочные столбцы:

test <- tibble(a= list(c(1,2), c(3,4)))
feather::write_feather(test, 'test.csv')

Ошибка в writeFeather(x, path): не реализовано: a является списком

Я ожидал, что методы в readr пакет, чтобы быть в состоянии справиться с этим, но ни один из тех, которые я пробовал, кажется, не в состоянии.

Как мне это сделать?

2 ответа

Решение

Ты можешь использовать saveRDS а также readRDS функции:

library(tibble)
test <- tibble(a= list(c(1,2), c(3,4)))
saveRDS(test, "c:/test.rds")
test_2 <- readRDS("c:/test.rds"))
identical(test, test_2)

в readr пакет есть read_rds а также write_rds функции, которые даже позволяют устанавливать сжатие.

Мой опыт tidyverse в том, что они не работают со столбцами, содержащими списки. Например, filter из dplyr не работает правильно для списков внутри data.frames. Таким образом, для операций, которые не поддерживаются, вы застряли с функциями, которые поддерживают это.

Если вы просто ищете способ хранения любого объекта R на диске, я бы порекомендовал вам проверить save или же saveRDS (а также load а также readRDS). Это сериализует R объектов в двоичном формате. Обратите внимание, что это полезно только в качестве хранилища между сеансами R и не совместимо с другими инструментами анализа, такими как Python или SPSS.

Другие вопросы по тегам