2016-11-06 47 views
1

修复的错误数目不正确的下标我有了这种结构的JSON:fromJSON + ldply:矩阵

{\"A\": [[\"x\", 0.2], [\"y\", 0.3], [\"z\", 0.3]], \"B\": [[\"x\", 0.2], [\"y\", 0.3]]} 

我试图做到这一点:

library(jsonlite) 
library(plyr) 
my_data <- fromJSON(my_json_file, flatten = TRUE) 
my_data <- ldply(my_data, rbind) 

,但我得到这个错误:

Error in output[rng, lcols[[i]]] <- matrices[[i]] : 
    incorrect number of subscripts on matrix 

我试图做do.call(rbind, my_json_file),并通过这样做,某些信息丢失,因为ldply应该返回

V1 | V2 | V3 
A | x | 0.2 
A | y | 0.3 
A | z | 0.3 
B | x | 0.2 
B | y | 0.3 

do.call回报

V2 | V3 
x | 0.2 
y | 0.3 
z | 0.3 
x | 0.2 
y | 0.3 

有没有办法迫使ldply或获得与do.call相同的结果?

+1

或许像'do.call(rbind,lapply(fromJSON(my_json),data.frame))'让你开始 – SymbolixAU

+0

谢谢!!加上'my_data $ id < - colnames(my_data)'作品 – pachamaltese

回答

1

为@SymbolixAU启动解决方案时ldply不工作是

my_data <- do.call(rbind, lapply(fromJSON(my_json), data.frame)) 
my_data$id <- colnames(my_data) 
+0

很高兴它可以工作 - 但是,我怀疑在大数据集中'do.call + rbind + lapply'可能效率不高。 – SymbolixAU

+0

是的,我不得不使用'mclapply',但至少它工作...不知道为什么'ldply'没有 – pachamaltese