有没有办法从输入到 R 中的 toJSON 函数的数据框输出中删除引号?
Is there a way to remove quotes from the output of a data frame entered into the toJSON function in R?
我正在尝试将 R 中的数据帧输出为 json 文件,以用于我在 R 外部制作的高图图。这就是我的输出结果:-
[{"name":"alpha","value":1},{"name":"brave","value":2},{"name":"charlie","value":3}]
但是,我希望我的输出看起来像这样:-
[{name:"alpha",value:1},{name:"brave",value:2} {name:"charlie",value:3}]
我应该怎么做才能使我的数据框的名称(在本例中为名称和值)不被引号括起来?如果将我的数据转换为 json 文件不是最好的方法,我还能做什么 can/should?
library(tidyverse)
library(jsonlite)
data = tibble(name = c("alpha", "bravo", "charlie"),
value = c(1, 2, 3))
output = toJSON(data, dataframe="rows")
write(output, "output.txt")
使用 regex
的一种可能方法,从出现在冒号 :
之前的值中删除引号
json_string <- jsonlite::toJSON(data, dataframe="rows")
temp <- stringr::str_replace_all(json_string, '"(\w+)"\s*:', '\1:')
cat(temp)
#[{name:"alpha",value:1},{name:"bravo",value:2},{name:"charlie",value:3}]
write(temp, "output.txt")
不确定如何在 toJSON 中执行此操作,但您可以使用 qdap
库中的 mgsub
sapply(names(data), function(name_i){
output <<- mgsub(paste0("\"", name_i, "\""), name_i, output)})
这给了你
output
[{name:"alpha",value:1},{name:"bravo",value:2},{name:"charlie",value:3}]
另一种方式-
library(tidyverse)
library(jsonlite)
data = tibble(name = c("alpha", "bravo", "charlie"), value = c(1, 2, 3))
output = toJSON(data)
output=gsub("\"(\w*)\":", "\1:", output,perl=TRUE)
print(output)
输出-
[{name:"alpha",value:1},{name:"bravo",value:2},{name:"charlie",value:3}]
我正在尝试将 R 中的数据帧输出为 json 文件,以用于我在 R 外部制作的高图图。这就是我的输出结果:-
[{"name":"alpha","value":1},{"name":"brave","value":2},{"name":"charlie","value":3}]
但是,我希望我的输出看起来像这样:-
[{name:"alpha",value:1},{name:"brave",value:2} {name:"charlie",value:3}]
我应该怎么做才能使我的数据框的名称(在本例中为名称和值)不被引号括起来?如果将我的数据转换为 json 文件不是最好的方法,我还能做什么 can/should?
library(tidyverse)
library(jsonlite)
data = tibble(name = c("alpha", "bravo", "charlie"),
value = c(1, 2, 3))
output = toJSON(data, dataframe="rows")
write(output, "output.txt")
使用 regex
的一种可能方法,从出现在冒号 :
json_string <- jsonlite::toJSON(data, dataframe="rows")
temp <- stringr::str_replace_all(json_string, '"(\w+)"\s*:', '\1:')
cat(temp)
#[{name:"alpha",value:1},{name:"bravo",value:2},{name:"charlie",value:3}]
write(temp, "output.txt")
不确定如何在 toJSON 中执行此操作,但您可以使用 qdap
库中的 mgsub
sapply(names(data), function(name_i){
output <<- mgsub(paste0("\"", name_i, "\""), name_i, output)})
这给了你
output
[{name:"alpha",value:1},{name:"bravo",value:2},{name:"charlie",value:3}]
另一种方式-
library(tidyverse)
library(jsonlite)
data = tibble(name = c("alpha", "bravo", "charlie"), value = c(1, 2, 3))
output = toJSON(data)
output=gsub("\"(\w*)\":", "\1:", output,perl=TRUE)
print(output)
输出-
[{name:"alpha",value:1},{name:"bravo",value:2},{name:"charlie",value:3}]