R mongolite:数组从 mongo 加载为列,元素为 data.frame
R mongolite: Arrays are loaded from mongo as columns with elements as data.frame
我一直在使用 jsonlite
并且我曾经在 fromJSON()
函数中论证 simplifyDataFrame
。 mongolite
包中有类似的东西吗?例如使用 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
我一直在使用 jsonlite
并且我曾经在 fromJSON()
函数中论证 simplifyDataFrame
。 mongolite
包中有类似的东西吗?例如使用 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