首页 > 解决方案 > 如何在数据帧的每一行上运行函数,同时使用该数据帧中的多个参数,并在列表中输出新的数据帧

问题描述

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

这是一个例子:

我从这个数据框开始:

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))

标签: rfunctiondplyrlapply

解决方案


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

library(dplyr)

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

如果您想要列表中每个元素的一整行 data.frame,这将起作用。

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

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))

推荐阅读