我需要将数据帧转换为 JSON。数据框中有几个嵌套的数据框作为变量来转换为 JSON。
但是,当转换为 JSON 时,我需要将下面描述的数据Values1作为对象({}仅包含在 中)而不是数组(包含在 中[])。
下面的代码是一个表示,显示我当前的工作流程和问题。
library(dplyr)
library(tidyr)
library(jsonlite)
df1 <- data.frame(name = c("a", "b", "c"),
v = c(1, 2, 3),
w = c(10, 20, 30)) %>%
group_by(name) %>%
nest_legacy(.key = "Values1")
df2 <- data.frame(name = c("a", "b", "c"),
x = c(5, 10, 15),
y = c(100, 200, 300),
z = c(1000, 2000, 3000)) %>%
group_by(name) %>%
nest_legacy(.key = "Values2")
df3 <- df1 %>%
left_join(df2)
json <- toJSON(df3, dataframe = "rows", …Run Code Online (Sandbox Code Playgroud) 是否有一些好的 R 包可以将预测模型和其他复杂对象与 JSON 相互转换?我从这个例子中得到了线性回归模型:
eruption.lm = lm(eruptions ~ waiting, data=faithful)
newdata = data.frame(waiting=80)
predict(eruption.lm, newdata)
Run Code Online (Sandbox Code Playgroud)
我想将 eruption.lm 模型序列化为 JSON 将其存储在某处或将其发送到某个外部系统,然后对其进行反序列化并进行预测。我尝试过使用jsonlite R 包:
json<-serializeJSON(eruption.lm)
lin.model<-unserializeJSON(json)
predict(lin.model, newdata)
Run Code Online (Sandbox Code Playgroud)
但是,jsonlite 无法处理复杂的对象——反序列化模型在预测中返回错误:
Error in eval(expr, envir, enclos) : could not find function "list"
Run Code Online (Sandbox Code Playgroud)
是否有一些更好的包可以序列化/反序列化对象。
我正在尝试使用jsonlite包和toJSON函数将R列表编码为json。我有一个简单的项目,例如:
list(op='abc')
Run Code Online (Sandbox Code Playgroud)
我希望成为:
{
"op" : "abc"
}
Run Code Online (Sandbox Code Playgroud)
相反,我得到:
{
"op" : ["abc"]
}
Run Code Online (Sandbox Code Playgroud)
我试图向其提供json的API扼流圈,并要求前者。关于如何从jsonlite(或另一个R json包)获取以前的行为的任何建议吗?
我正在处理 ar 数据框,如下所示。
id date items price
10 2014/09/13 shoes 187
10 2014/09/13 belt 35
10 2014/09/14 shirt 69
12 2014/10/01 dress 58
12 2014/10/01 bag 118
12 2015/01/03 shoes 115
purchase = structure(list(id = c(10, 10, 10, 12, 12, 12), date = structure(c(1L,
1L, 2L, 3L, 3L, 4L), .Label = c("2014/09/13", "2014/09/14", "2014/10/01",
"2015/01/03"), class = "factor"), name = structure(c(5L, 2L,
4L, 3L, 1L, 5L), .Label = c("bag", "belt", "dress", "shirt",
"shoes"), class = "factor"), price = c(187, 35, …Run Code Online (Sandbox Code Playgroud) 第一次发帖,长期潜伏。要温柔。中等 R 用户。我确信有一种更好的、更实用的方式来做我需要的事情,但我觉得我在没有洞察力的情况下研究了死亡。
我正在尝试将数据集合并到预先存在的 JSON 结构。对于许多序列化的 JSON 请求,每个 JSON 结构有一行记录。
我将数据集加载到包含 13 个变量的数据并更改列标题以匹配它们在 JSON 结构中的显示方式
library(jsonlite)
#### Map Column headers to their respective names in the JSON Structure
colnames(data) <- c("default.A",
"default.B",
"default.C",
"items.A",
"items.B.1",
"items.B.2",
"items.B.3",
"items.B.4",
)
Run Code Online (Sandbox Code Playgroud)
创建空白的 JSON 结构。这是需要处理 JSON 请求的格式。简单的嵌套结构。
sample <- '{
"default": {
"A": "",
"B": "",
"C": "",
},
"items": [{
"A": "",
"B": {
"1": "",
"2": "",
"3": "",
"4": "",
}
}]
}'
jsonstructure <- fromJSON(sample)
Run Code Online (Sandbox Code Playgroud)
将所有内容都设置为 DF。合并它们。用空格填充 NA
x …Run Code Online (Sandbox Code Playgroud) 我正在尝试将 geojson 作为空间对象(即 sp)从 USGS Web 服务(streamstats)导入到 R 中,但无法将其转换为 R 的正确格式。
library(jsonlite)
mydata <- fromJSON("https://streamstats.usgs.gov/streamstatsservices/watershed.geojson?rcode=NY&xlocation=-74.524&ylocation=43.939&crs=4326&includeparameters=false&includeflowtypes=false&includefeatures=true&simplify=true")
Run Code Online (Sandbox Code Playgroud)
这将返回 geojson 中的功能以及一堆我不需要的其他东西。我可以只选择我需要的数据框并将其写出:
tmp <- mydata$featurecollection[2,2]
write_json(tmp, 'test.json')
Run Code Online (Sandbox Code Playgroud)
[{"type": "FeatureCollection", ...一堆其他东西}]
如果我手动删除 json 文件两端的括号“[]”,则可以将其作为空间对象导入:
library(geojsonio)
test <- geojson_read('test.json', method='local', what='sp')
Run Code Online (Sandbox Code Playgroud)
否则我会收到此错误:
rgdal::ogrListLayers(input) 中的错误:无法打开数据源
有没有办法去掉两端的括号?也许我还缺少一个更简单的解决方案,我从中选择了所需的数据框。
我正在使用 jsonlite 中的 toJSON() 将特定结构(API 所需)的嵌套列表转换为 JSON。但是,我需要最终的 JSON 不包含外部方括号(API 也需要)。
test_list <- list(
list(formName = "test_title", user_id = "test_userid", rows = list(list(row = 0))),
list(formName = "test_title2", user_id = "test_userid2", rows = list(list(row = 0)))
)
jsonlite::toJSON(test_list, pretty = TRUE, auto_unbox = TRUE)
Run Code Online (Sandbox Code Playgroud)
这使:
[
{
"formName": "test_title",
"user_id": "test_userid",
"rows": [
{
"row": 0
}
]
},
{
"formName": "test_title2",
"user_id": "test_userid2",
"rows": [
{
"row": 0
}
]
}
]
Run Code Online (Sandbox Code Playgroud)
但我需要删除第一个和最后一个方括号。
我可以使用 purrr::flatten() 删除列表的顶层,从而删除 JSON 中的方括号,但 toJSON() 似乎不喜欢列表有重复的名称,并将它们重命名为 …
我正在学习如何使用 R 中的 API 获取数据。我知道其目的httr是为curl 包提供一个包装器。\n我为了向 API 发出请求而遵循的文档具有以下 HTTP 请求格式。下面的代码将用于生成令牌
curl -s \\\n -d "client_id=clientid\xe2\x80\x9d \\\n -d "username=user\xe2\x80\x9d \\\n -d "password=pwd\xe2\x80\x9d \\\n -d "grant_type=password" \\\n -d "scope=openid email" \\\n "https://auth.com/token"\nRun Code Online (Sandbox Code Playgroud)\n\n之后,我将使用令牌通过此请求与 API 进行通信
\n\ncurl --header "Content-Type: application/json" \\\n --header "Accept: application/+json" \\\n --header "Authorization: Bearer token_goes_here\xe2\x80\x9c \\\n --request GET \\\n --url "https://api-sitename.org/sections?parent_id=0"\nRun Code Online (Sandbox Code Playgroud)\n\n最初,我在终端中运行这两个请求,它们成功了,我收到了 JSON 格式的响应。我的问题是,如何在 R 脚本中运行这些请求,以便获得响应并将它们存储在 R studio 全局环境中?我的目标是最终将数据集从API加载到Rstudio工作环境中。\nT
\n我有以下JSON文件:
{"id":1140854908,"name":"'Amran"}
{"id":1140852651,"name":"'Asir"}
{"id":1140855190,"name":"'Eua"}
{"id":1140851307,"name":"A Coruna"}
{"id":1140854170,"name":"A`Ana"}
Run Code Online (Sandbox Code Playgroud)
我使用了jsonlite软件包,但遇到了解析错误
library(jsonlite)
try <- fromJSON("states.txt",simplifyDataFrame = T)
# Error in feed_push_parser(readBin(con, raw(), n), reset = TRUE) :
# parse error: trailing garbage
# :1140854908,"name":"'Amran"} {"id":1140852651,"name":"'Asir"
# (right here) ------^
Run Code Online (Sandbox Code Playgroud) 这是 MWE,如何获得正确的数字作为字符。
require(jsonlite)
j <- "{\"id\": 323907258301939713}"
a <- fromJSON(j)
print(a$id, digits = 20)
class(a$id)
a$id <- as.character(a$id)
a$id
class(a$id)
Run Code Online (Sandbox Code Playgroud)
这是输出。
Loading required package: jsonlite
Loading required package: methods
[1] 323907258301939712
[1] "numeric"
[1] "323907258301939712"
[1] "character"
Run Code Online (Sandbox Code Playgroud)
我想获得确切的数字323907258301939713作为字符a