
作者在这里
elastic
我们不试图将输出强制转换为data.frame的输出,因为它的变量是如此之大,以至于我们经常会遇到错误。但是我们确实允许您传递一个选项以
jsonlite强制执行
data.frame(通过
asdf参数,
作为data.frame ),因为这永远不会失败。
如果处理列表输出,我将使用之一,
dplyr或者
data.table如果要返回列表。
为了重现性:
library(elastic)if (!index_exists("shakespeare")) { shakespeare <- system.file("examples", "shakespeare_data.json", package = "elastic") docs_bulk(shakespeare)}res <- Search(index="shakespeare", fields=c('play_name','speaker'))out <- lapply(res$hits$hits, function(x) unlist(x$fields, FALSE))dplyr
library(dplyr)bind_rows(out)#> # A tibble: 10 × 2#> play_name speaker#> <chr> <chr>#> 1 Henry IV #> 2 Henry IV KING HENRY IV#> 3 Henry IV KING HENRY IV#> 4 Henry IV KING HENRY IV#> 5 Henry IV KING HENRY IV#> 6 Henry IV KING HENRY IV#> 7 Henry IV KING HENRY IV#> 8 Henry IV KING HENRY IV#> 9 Henry IV WESTMORELAND#> 10 Henry IV WESTMORELAND
data.table
library(data.table)rbindlist(out, fill = TRUE, use.names = TRUE)#> play_name speaker#> 1: Henry IV #> 2: Henry IV KING HENRY IV#> 3: Henry IV KING HENRY IV#> 4: Henry IV KING HENRY IV#> 5: Henry IV KING HENRY IV#> 6: Henry IV KING HENRY IV#> 7: Henry IV KING HENRY IV#> 8: Henry IV KING HENRY IV#> 9: Henry IV WESTMORELAND#> 10: Henry IV WESTMORELAND
或者,使用
asdf参数,
jsonlite::fromJSON如果可能的话,该参数在内部定向为解析到data.frame。
res <- Search(index="shakespeare", fields=c('play_name','speaker'), asdf = TRUE)res$hits$hits$fields#> play_name speaker#> 1 Henry IV #> 2 Henry IV KING HENRY IV#> 3 Henry IV KING HENRY IV#> 4 Henry IV KING HENRY IV#> 5 Henry IV KING HENRY IV#> 6 Henry IV KING HENRY IV#> 7 Henry IV KING HENRY IV#> 8 Henry IV KING HENRY IV#> 9 Henry IV WESTMORELAND#> 10 Henry IV WESTMORELAND使用:
- [R
v3.3.2
- OSX
elastic
v0.7.8.9000
Elasticsearch
v2.3.4
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)