用于迭代查询的R方法

时间:2016-10-25 12:13:08

标签: r

这是R中一般方法的问题,我试图找到一种进入R语言的方法,但数据类型和循环方法(应用,sapply等)对我来说有点不清楚。

我的目标是什么: 使用带有多个参数的配置列表中的参数从API查询数据。将数据作为聚合data.frame返回。

首先,我想定义一个多个向量(列)的列表

site         segment    id
google.com   Googleuser 123
bing.com     Binguser   456

如何管理这样的值组列表(逐行)? data.frames是以列为中心的,您无法在R脚本中逐行写入data.frame。所以我发现定义这个初始配置表的唯一方法是csv,这是我试图避免的一种方法,但我找不到让它更优雅的方法。

现在我想查询我的数据,让我们说这个函数:

query.data <- function(site, segment, id){
  config <- define_request(site, segment, id)
  result <- query_api(config)
  return result
}

这将为我提供data.frame,这意味着每次查询数据时都会使用相同的列。所以我的结果应该是一个大数据框架,而不是类似data.frames的列表。

现在sapply允许使用一个参数列表和多个静态参数。 mapply工作,但它会给我一些疯狂输出的数据,我无法处理甚至理解它是什么。

原则上data.frames列表没问题,数据是正确的,但对我来说感觉很麻烦。

R我还没有理解哪些核心概念?方法是什么?

1 个答案:

答案 0 :(得分:0)

如果您有一个lapply / sapply解决方案,它返回一个具有相同列的数据帧列表,您可以轻松地获得一个包含do.call()的大型数据帧。 do.call()将列表中的每个项目作为参数输入到另一个函数中,允许您执行诸如

之类的操作
big.df <- do.call(rbind, list.of.dfs)

将组件数据帧附加到单个大型数据帧中。

一般来说do.call(rbind,something)是一个很好的技巧,可以在使用R时保留在后面的口袋中,因为通常最有效的方法就是使用某种应用函数,这样你就可以得到一个元素列表。你真的想要一个矩阵/矢量/数据帧/等。