繁体   English   中英

使用data.table和RJSONIO / jsonlite - 结果被转置

[英]Using data.table and RJSONIO / jsonlite - results are transposed

我已经实现了rstudio的htmlwidgets的包装库部分,它呈现了一个数据透视表。 包裹在这里

该包适用于data.tables和data.frame(因为它应该!)。 例如,它适用于虹膜。 另一方面,如果我尝试将iris转换为data.table我的包(实际上是htmlwidgets - 内部使用RJSONIO)会引发错误。

我知道它似乎很复杂,但你只需要检查以下代码之间的差异即可重现错误:

library(data.table)
library(RJSONIO)
data.table(fromJSON(toJSON(data.table(iris))))

结果与亲爱的虹膜数据集不同:

                                           V1
1:                   5.1,4.9,4.7,4.6,5.0,5.4,
2:                   3.5,3.0,3.2,3.1,3.6,3.9,
3:                   1.4,1.4,1.3,1.5,1.4,1.7,
4:                   0.2,0.2,0.2,0.2,0.2,0.4,
5: setosa,setosa,setosa,setosa,setosa,setosa,

另一方面,jsonlite能够正确地重新构建虹膜(只需记住在运行代码之前分离RJSONIO):

    library(data.table)
    library(jsonlite)
    data.table(fromJSON(toJSON(data.table(iris))))

     Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
  1:          5.1         3.5          1.4         0.2    setosa
  2:          4.9         3.0          1.4         0.2    setosa
  3:          4.7         3.2          1.3         0.2    setosa
  4:          4.6         3.1          1.5         0.2    setosa
  5:          5.0         3.6          1.4         0.2    setosa

我不确定问题是否存在于data.table或RJSONIO ......

这与json无关。
RJSONIO::fromJSON返回listjsonlite::fromJSON返回data.frame
它关系到data.table呼叫list比上调用不同data.frame ,但仍像预期的那样。
在外部调用中尝试as.data.table而不是data.table

as.data.table(fromJSON(toJSON(data.table(iris))))

这已在data.table github上讨论过了。 我已在回答您的问题时提到了讨论内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM