2017-02-10 3 views
0

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

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

Error in writeFeather(x, path) : Not implemented: a is a list

Я ожидал, что методы в 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 функции, которые позволяют даже сжатия для установки.

1

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

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

+0

Вы ссылаетесь на базу данных 'write.csv'? Потому что это также дало мне ошибку: 'unimplemented type 'list' в 'EncodeElement''. Наверное, теперь мне придется нормализовать свои данные. – hdkrgr

+1

Я ссылался на это, но я согласен, что это не очень хороший формат. Я думаю, что простой двоичный формат будет состоять в использовании 'saveRDS'. Однако это не взаимозаменяемо с другими пакетами программного обеспечения и предназначено исключительно для использования между сеансами R. –

+0

И действительно, вы также можете уменьшить свои значения до одного. –

Смежные вопросы