R节省递归变量



首先,我找不到适合此的答案。

我正在执行此功能

find.childrens <- function(categoria){
  x <- fromJSON(paste("https://api.mercadolibre.com/categories/",categoria,sep=""))
  if(!is.null(nrow(x$children_categories))){
    for(i in 1:nrow(x$children_categories)){
    find.childrens(x$children_categories[i,1])}
  }else{print(x$id)}
}
saving <- find.childrens(categoria="MLA122518")

有效的

我无法保存返回(返回到打印的位置)

有人知道如何帮助我吗?问候!

递归函数应始终返回某些东西,如果您想要类别下的所有类别:

find.childrens <- function(categoria){
  x <- fromJSON(paste("https://api.mercadolibre.com/categories/",categoria,sep=""))
  ids <- NULL
  if(!is.null(nrow(x$children_categories))){
    for(i in 1:nrow(x$children_categories)){
      ids <- c(ids, find.childrens(x$children_categories[i,1]))
    }
  }else{
    ids <- x$id
  }
  return(ids)
}
saving <- find.childrens(categoria="MLA122518")
> saving
[1] "MLA385241" "MLA385242"

您需要同时存储并返回每个递归跳跃返回的值:

library("jsonlite")
find.childrens <- function(categoria) {
  x <- fromJSON(paste("https://api.mercadolibre.com/categories/", categoria, sep=""))
  count <- 0L
  if (length(x[["children_categories"]])) {
    for(i in seq_along(x[["children_categories"]][["id"]])) {
      count <- count + find.childrens(x[["children_categories"]][i,"id"])
    }
  } else {
      count <- x[["total_items_in_this_category"]]
  }
  count
}
(saving <- find.childrens(categoria="MLA122518"))
## [1] 113

最新更新