这是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我还没有理解哪些核心概念?方法是什么?
答案 0 :(得分:0)
如果您有一个lapply / sapply解决方案,它返回一个具有相同列的数据帧列表,您可以轻松地获得一个包含do.call()
的大型数据帧。 do.call()
将列表中的每个项目作为参数输入到另一个函数中,允许您执行诸如
big.df <- do.call(rbind, list.of.dfs)
将组件数据帧附加到单个大型数据帧中。
一般来说do.call(rbind,something)
是一个很好的技巧,可以在使用R时保留在后面的口袋中,因为通常最有效的方法就是使用某种应用函数,这样你就可以得到一个元素列表。你真的想要一个矩阵/矢量/数据帧/等。