R mongolite:数组从 mongo 加载为列,元素为 data.frame

R mongolite: Arrays are loaded from mongo as columns with elements as data.frame

我一直在使用 jsonlite 并且我曾经在 fromJSON() 函数中论证 simplifyDataFramemongolite 包中有类似的东西吗?例如使用 handler 参数?我没有找到关于此方法的足够文档。

我有类似的记录

json <- '{"list": [{"x": 1, "y": "a"},{"x": 2, "y": "b"}],"numeric": 1.2}'

当我使用 find() 函数加载记录时,它会创建包含两列的数据框。第一列包含整个数据框作为元素。

df <- m$find()
df$list[[1]]
#   x y
# 1 1 a
# 2 2 b

我想要的是这样的东西

json %>% fromJSON(simplifyDataFrame = F) %>% as.data.frame.list
#   list.x list.y list.x.1 list.y.1 numeric
# 1      1      a        1        a     1.2

有解决办法吗?


编辑:

我知道我可以在循环中将数据框转换为列表。或者将数据转换成JSON格式,然后使用fromJSON(simplifyDataFrame = F)。对于我使用的数据大小,这两种方法都太慢了。看我的 .

尝试使用 m$iterate()$batch() 而不是 m$find()。它给出了您期望的输出。

json <- '{"list": [{"x": 1, "y": "a"},{"x": 2, "y": "b"}],"numeric": 1.2}'
json %>% fromJSON(simplifyDataFrame = F) %>% as.data.frame.list
  list.x list.y list.x.1 list.y.1 numeric
1      1      a        2        b     1.2
catch <- m$insert(json)
m$iterate()$batch() %>% as.data.frame.list
  list.x list.y list.x.1 list.y.1 numeric
1      1      a        2        b     1.2