如何 运行 在数据帧的每一行上运行,同时使用该数据帧的多个参数,并在列表中输出新的数据帧

How to run function on each row of a dataframe, while using multiple arguments from that dataframe, and outputting new dataframes in a list

假设我从一个数据框开始。我想在每一行上执行一个函数。该函数将行的多个列作为参数。我希望最终结果是一个数据帧列表,其中每个数据帧对应于原始数据帧的一行。我怎样才能做到这一点?我对 apply 中的各种函数和 tidyverse.

中的一些其他函数感到困惑

这是一个例子:

我从这个数据框开始:

a <- data.frame(a= c(1,2), b=c(2,3), c=c(0,0))

我想执行一个简单地添加列 a、b 和 c 的函数。输出是结果,其中每行的总和包含在数据框中。数据框的名称应与行号相对应。

b <- list(r1=data.frame(3), r2=data.frame(5))

您可以尝试先使用 mutate 创建您的 now 变量,然后 split 您的 data.frame 使用 row_number 索引。

library(dplyr)

a %>% mutate(sum_of_rows=rowSums(.)) %>%
      split(1:nrow(a)) %>%
      setNames(paste0('r', 1:nrow(a))

如果您希望列表中的每个元素都有一整行 data.frame,这将有效。

如果您只想要一个 data.frame 的列表,每个列表只有一个元素,如您的示例所示,您可以简单地使用:

rowSums(a) %>%
as.data.frame() %>%
split(1:nrow(.)) %>%
setNames(paste0('r', 1:nrow(a))

或者只用一些基础 R:

setNames(split(as.data.frame(rowSums(a)), 1:nrow(a)), paste0('r', 1:nrow(a))