使用 data.table 和 RJSONIO / jsonlite - 结果被转置
Using data.table and RJSONIO / jsonlite - results are transposed
我已经实现了 rstudio 的 htmlwidgets 的包装器库部分,它呈现一个枢轴 table。
包裹是here.
该软件包适用于 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 能够正确地重新构建 iris(只记得在 运行 代码之前分离 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
returns list
而 jsonlite::fromJSON
returns data.frame
.
它与 list
上的 data.table
调用有关,这与 data.frame
上的调用不同,但仍按预期运行。
在外部调用中尝试 as.data.table
而不是 data.table
。
as.data.table(fromJSON(toJSON(data.table(iris))))
这已经在 data.table github 上讨论过了。我已经回复你的问题参考讨论。
我已经实现了 rstudio 的 htmlwidgets 的包装器库部分,它呈现一个枢轴 table。 包裹是here.
该软件包适用于 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 能够正确地重新构建 iris(只记得在 运行 代码之前分离 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
returns list
而 jsonlite::fromJSON
returns data.frame
.
它与 list
上的 data.table
调用有关,这与 data.frame
上的调用不同,但仍按预期运行。
在外部调用中尝试 as.data.table
而不是 data.table
。
as.data.table(fromJSON(toJSON(data.table(iris))))
这已经在 data.table github 上讨论过了。我已经回复你的问题参考讨论。