将函数输出迭代添加到 R 中的 tibble

Iteratively adding function output to a tibble in R

我在 R 中有一个函数,它将参与者 ID 作为输入并输出只有一行 10 列的数据帧。要调用该函数,我需要做的就是 function(id) 然后我得到:

column1 column2 etc
value value etc

我想 运行 对 ID 列表中的每个 ID 执行函数,并为每个参与者输出一行,其中第一列是 ID 号,后面是函数输出中的所有正常列,像这样:

ID column1 column2 etc
01 value value etc
02 value value etc
03 value value etc

我的直觉(作为一个没有经验的 R 用户)是尝试在 for 循环中执行此操作,但我认为使用 purrr 会有更好的方法来执行此操作。 map_df 是我想要的吗?以及如何为参与者 ID 添加额外的列?

是的,通过指定 .id 参数,使用 map_df 会有所帮助。

fn <- function(id) {
  #some function that returns a dataframe
}

#If your dataframe is called `df` with `ID` column in it
result <- purrr::map_df(df$ID, fn, .id = 'ID')

考虑使用 rbindlist

library(data.table)
rbindlist(lapply(df$ID, fn), idcol = "ID")