でのMongoDBで使用するために/デシリアライズggplotオブジェクトをシリアライズする方法:私はこのコードを持っているR
for(plot in plotResults) {
.session$plots[[plot$id]] <- if (!is.null(plot[["grob"]])) {
plot[["grob"]]
} else {
plot[["plot"]]
}
ggsave(paste0(plot$id, ".png"), .session$plots[[plot$id]])
...
}
ファイルが生成されますが、私はこのツールを使用してモンゴするggplotオブジェクトを保存する場合:
serializeObj <- function(obj) {
if (is.list(obj)) {
structure(lapply(obj, serializeObj), names = serializeNames(obj))
} else {
rawToChar(serialize(obj, NULL, ascii = TRUE))
}
}
deserializeObj <- function(obj) {
if (is.list(obj)) {
structure(lapply(obj, deserializeObj), names = unserializeNames(obj))
} else if (is.serialized(obj)) {
unserialize(charToRaw(obj))
} else {
obj
}
}
## Replaces characters illegal in Mongo names with "safe" substitutes
safeNames <- function(value) {
gsub("\\.", "___DOT___", value)
}
## Replaces back "safe" substitutes
unsafeNames <- function(value) {
gsub("___DOT___", ".", value)
}
serializeNames <- function(obj) {
lapply(names(obj), safeNames)
}
unserializeNames <- function(obj) {
lapply(names(obj), unsafeNames)
}
私はモンゴし、保存し、後でdeserializeObjが後モンゴから読み取る前に、私はserializeObjを実行していますよ。そして、ggplotオブジェクトの代わりに読んだ後、私はリストを持っており、そのリストにggsaveを呼び出すことはできません。
ggplotのようなオブジェクトをシリアル化し、それを逆シリアル化して同じオブジェクトを取得するにはどうすればよいですか?
ggplotは(ネストされた)リストです。それを確認するには 'str'を使います。あなたのアプローチは属性、最も重要なクラス属性を失います。 – Roland
@Rolandにはクラス属性を復元する方法がありますか? – jcubic
'help(" attr ")'、 'help(" attributes ")'、もちろんそれらを最初に保存する必要があります。さもなければ、私たちはサブリストの属性のいくつかの手作業について話しています。 – Roland