将函数输出迭代添加到 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")
我在 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")