gpt4 book ai didi

json - ifelse try组合仅返回长度为1的对象

转载 作者:行者123 更新时间:2023-12-03 07:58:31 26 4
gpt4 key购买 nike

如果运行此命令,则会获得有关财务报表的信息

library(RJSONIO)
data<-fromJSON("http://www.registeruz.sk/cruz-public/api/uctovny-vykaz?id=4455316",encoding = "UTF-8")

当您运行它时,您将获得长度为312的 vector 以及 Assets 负债表中的项目
data$obsah$tabulky[[1]]$data

我这样做是为了在循环内提​​供更多帮助,有时不存在上面的json路径,这将返回error。因此,如果有错误,我将尝试返回NA,否则,我只想从上述路径返回对象
ifelse(class(try(data$obsah$tabulky[[1]]$data))=="try-error",NA,data$obsah$tabulky[[1]]$data)

但是,当我运行它时,它仅返回1个不完整的 vector 312

最佳答案

您无法从ifelse获得所需的结果,因为根据该函数的文档,“ifelse返回的值与测试的形状相同。”您的测试长度为1,因此ifelse将仅返回长度为1的对象。

要返回不同尺寸的对象,可以分解ifelse部分,并将它们包装在对lapply的调用中。这是一种实现方法,可在URL的 vector 上迭代过程并将结果收集在列表中:

lapply(urls, function(x) {

# you might want try here, too, in case you get errors at this stage
X <- try(fromJSON(x, encoding = "UTF-8"))

Y <- try(X$obsah$tabulky[[1]]$data)

if (class(Y) == "try-error") {

NA

} else {

Y

}

})

关于json - ifelse try组合仅返回长度为1的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43953160/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com