JSON 文件中的 "NA" 转换为 NA 逻辑
"NA" in JSON file translates to NA logical
我有 json
个包含国家/地区数据的文件。其中一个文件具有以下数据:
"[{\"count\":1,\"subject\":{\"name\":\"Namibia\",\"alpha2\":\"NA\"}}]"
我有以下代码使用 jsonlite
包将 json
转换为 data.frame
:
df = as.data.frame(fromJSON(jsonfile), flatten=TRUE))
我期待 data.frame
包含数字和字符串:
count subject.name subject.alpha2
1 Namibia "NA"
相反,NA
alpha2 代码被自动转换为 NA
逻辑,这就是我得到的:
str(df)
$ count : int 1
$ subject.name : chr "Namibia"
$ subject.alpha2: logi NA
我希望 alpha2 是一个字符串,而不是逻辑。我该如何解决这个问题?
fromJSON 的特定实现(以及三个不同的函数名称的包)有一个 simplifyVector 参数,它似乎阻止了 corecion:
require(jsonlite)
> as.data.frame( fromJSON(test, simplifyVector=FALSE ) )
count subject.name subject.alpha2
1 1 Namibia NA
> str( as.data.frame( fromJSON(test, simplifyVector=FALSE ) ) )
'data.frame': 1 obs. of 3 variables:
$ count : int 1
$ subject.name : Factor w/ 1 level "Namibia": 1
$ subject.alpha2: Factor w/ 1 level "NA": 1
> str( as.data.frame( fromJSON(test, simplifyVector=FALSE ) ,stringsAsFactors=FALSE) )
'data.frame': 1 obs. of 3 variables:
$ count : int 1
$ subject.name : chr "Namibia"
$ subject.alpha2: chr "NA"
我尝试查看该选项是否适用于 flatten
参数,但很失望:
> str( fromJSON(test, simplifyVector=FALSE, flatten=TRUE) )
List of 1
$ :List of 2
..$ count : int 1
..$ subject:List of 2
.. ..$ name : chr "Namibia"
.. ..$ alpha2: chr "NA"
接受的答案没有解决我的用例。
然而,rjson::fromJSON
自然而然地做到了这一点,令我惊讶的是,我的数据速度提高了 10 倍。
我有 json
个包含国家/地区数据的文件。其中一个文件具有以下数据:
"[{\"count\":1,\"subject\":{\"name\":\"Namibia\",\"alpha2\":\"NA\"}}]"
我有以下代码使用 jsonlite
包将 json
转换为 data.frame
:
df = as.data.frame(fromJSON(jsonfile), flatten=TRUE))
我期待 data.frame
包含数字和字符串:
count subject.name subject.alpha2
1 Namibia "NA"
相反,NA
alpha2 代码被自动转换为 NA
逻辑,这就是我得到的:
str(df)
$ count : int 1
$ subject.name : chr "Namibia"
$ subject.alpha2: logi NA
我希望 alpha2 是一个字符串,而不是逻辑。我该如何解决这个问题?
fromJSON 的特定实现(以及三个不同的函数名称的包)有一个 simplifyVector 参数,它似乎阻止了 corecion:
require(jsonlite)
> as.data.frame( fromJSON(test, simplifyVector=FALSE ) )
count subject.name subject.alpha2
1 1 Namibia NA
> str( as.data.frame( fromJSON(test, simplifyVector=FALSE ) ) )
'data.frame': 1 obs. of 3 variables:
$ count : int 1
$ subject.name : Factor w/ 1 level "Namibia": 1
$ subject.alpha2: Factor w/ 1 level "NA": 1
> str( as.data.frame( fromJSON(test, simplifyVector=FALSE ) ,stringsAsFactors=FALSE) )
'data.frame': 1 obs. of 3 variables:
$ count : int 1
$ subject.name : chr "Namibia"
$ subject.alpha2: chr "NA"
我尝试查看该选项是否适用于 flatten
参数,但很失望:
> str( fromJSON(test, simplifyVector=FALSE, flatten=TRUE) )
List of 1
$ :List of 2
..$ count : int 1
..$ subject:List of 2
.. ..$ name : chr "Namibia"
.. ..$ alpha2: chr "NA"
接受的答案没有解决我的用例。
然而,rjson::fromJSON
自然而然地做到了这一点,令我惊讶的是,我的数据速度提高了 10 倍。