【发布时间】:2019-03-11 17:15:51
【问题描述】:
我有一个带有 ID 列表的数据框和一个可以使用每个 ID 的函数:
- 对数据进行 API 调用,
- 总结这些数据,然后
- 生成结果列表。
如何使用 lapply 将每个 ID 的返回值列表(作为列)合并到数据框?
下面的示例在某种程度上复制了该过程...我有一个带有 ID 的数据框。该函数返回一个包含两个值的列表,我想将其作为列添加到数据框 myIDs。
myIDs <- as.data.frame(seq(1, 5))
names(myIDs) <- c("ID")
myfunc <- function (ID) {
id.results <- list(add.one = ID + 1,
times.two = ID * 2
)
return(id.results)
}
lapply(myIDs , function(x) myfunc(myIDs$ID))
【问题讨论】:
-
你看
dplyr::bind_rows了吗? -
你尝试过类似
df$new_column = lapply(df$id, your_function_to_make_api_call_and_summarize_and_produce_list_of_results)的方法吗? -
不,我没有尝试过 dplyr::bind_rows...我主要尝试过基本 R 方法。我去看看。
-
我不认为
bind_rows从您的描述中对您有用,但是如果您显示一点示例数据和结果,也许我会被证明是错误的。也许bind_rows在所有结果上,然后merge... -
听起来我们需要一个例子......