为每次迭代创建一个带有新行的data.frame

时间:2015-09-22 10:17:54

标签: json r loops lapply

我试图让脚本运行一个id列表以应用于API调用,这样我就可以创建一个data.frame结果,其中每个被调用的id返回的结果都是一行。

library(jsonlite)
ids <- c("101","102","103")  
baseURL <- "http://api.example.com/query_json.ashx?m=Details&Id="
for (i in ids)  {   details <- lapply((paste(baseURL,i, sep="")), fromJSON) }

我的问题是它遍历每个id,但后来只返回最后一个(103)的结果。显而易见,有一个非常基本的解决方案,但我很想念它。

2 个答案:

答案 0 :(得分:1)

你可以尝试那样的

UIView *NavView = [[UIView alloc] initWithFrame:CGRectMake(0, 0 , [UIScreen mainScreen].bounds.size.width, 44)];
NavView.backgroundColor = [UIColor redColor];
NavView.userInteractionEnabled = YES;
[self.navigationController.navigationBar addSubview:NavView];

首先,将结果放入向量,然后创建数据框。

答案 1 :(得分:0)

谢谢大家,两项建议都有效。

因为生成的fromJSON R列表是嵌套的,所以我需要进一步调整我的代码,以便最终构建数据框。

library(jsonlite)
ids <- c("101","102","103")  
nids <- length(ids)
baseURL <- "http://api.example.com/query_json.ashx?m=Details&Id="

details <- c()
for (i in ids)  {   
  details <- lapply(ids, function(id) fromJSON(paste(baseURL,id, sep="")))
}

details <- data.frame(matrix(unlist(details), nrow=nids, byrow=T))