首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用data.table和RJSONIO / jsonlite结果被转换

使用data.table和RJSONIO / jsonlite结果被转换
EN

Stack Overflow用户
提问于 2015-02-06 18:22:14
回答 1查看 696关注 0票数 1

我已经实现了一个包装器库,它是rstudio的htmlwidget的一部分,它呈现了一个pivot表。这个包是这里

这个包在data.tables和data.frame中很好地工作(它应该如此!)例如,它适用于虹膜。另一方面,如果我试图将iris转换为data.table,那么我的包(实际上是htmlwidgets -在内部使用RJSONIO)会引发一个错误。

我知道这似乎很复杂,但您只需检查以下代码之间的差异,就可以复制错误:

代码语言:javascript
复制
library(data.table)
library(RJSONIO)
data.table(fromJSON(toJSON(data.table(iris))))

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

代码语言:javascript
复制
                                           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能够正确地重新构建iris (只需记住在运行代码之前分离RJSONIO ):

代码语言:javascript
复制
    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.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-06 18:49:13

这与json无关。

RJSONIO::fromJSON返回list,而jsonlite::fromJSON返回data.frame

它与data.tablelist上的调用有关,与对data.frame的调用不同,但仍按预期的行为进行。

在外部调用中尝试as.data.table而不是data.table

代码语言:javascript
复制
as.data.table(fromJSON(toJSON(data.table(iris))))

这已经在data.table github上讨论过了。我已对你的问题作了答复,提到了这次讨论。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28372298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档