我正在寻找一种方法来读取包含无限值的矩阵,该矩阵在 JSON 文件中编码到 R 中。我目前正在使用 RJSONIO 库来实现此目的(rjson 和 rjsonlite 在我的案例)。
一个最小的说明性示例如下: (编辑:这个例子不够通用,我正在寻找的方法也可以处理 R 中未生成的非有限值)
> library("RJSONIO")
> M <- matrix(c(1:5, Inf), ncol=2, byrow=TRUE); M
[,1] [,2]
[1,] 1 2
[2,] 3 4
[3,] 5 Inf
> fromJSON(toJSON(M))
[[1]]
[1] 1 2
[[2]]
[1] 3 4
[[3]]
[[3]][[1]]
[1] 5
[[3]][[2]]
NULL
执行此代码还会产生一条警告,指出非有限值可能无法在 JSON 中正确表示。
我想知道是否有解决方法可以在文件读取过程中正确表示无限值?我可以接受文件在读取后存储为列表,但不能接受最后一个元素不是数字向量。
请注意,我并不是真正在寻找一种在读取整个文件后转换非数字向量的后处理方法:我已经有了这个,但我正在使用的实际文件非常大并且嵌套,所以我不想重新运行它们。
最佳答案
有几个(较新的)JSON 库可供选择 - 我使用了一点 jsonlite
,它在这里没有问题:
R> library(jsonlite)
R> M <- matrix(c(1:5, Inf), ncol=2, byrow=TRUE); M
[,1] [,2]
[1,] 1 2
[2,] 3 4
[3,] 5 Inf
R> fromJSON(toJSON(M))
[,1] [,2]
[1,] 1 2
[2,] 3 4
[3,] 5 Inf
R>
关于在 R 中读取无穷大的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59009232/