r - 如何在数据帧的每一行上运行函数,同时使用该数据帧中的多个参数,并在列表中输出新的数据帧
问题描述
假设我从一个数据框开始。我想对每一行执行一个功能。该函数将行的多列作为参数。我希望最终结果是一个数据帧列表,其中每个数据帧对应于原始数据帧的一行。我怎样才能做到这一点?我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))
解决方案
您可以尝试首先使用创建您的 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))
推荐阅读
- spring-boot - 我的表名是“images”,但 spring boot 抱怨“users_images”不存在
- docker - gocql + docker“未找到”
- php - php验证文本框中的数据
- javascript - 在等待 Ajax 响应时显示加载器,然后淡出加载器并淡入响应没有 jQuery
- specman - Specman 如何从文件中读取特定行,没有循环
- reactjs - 渲染 SFC 或调用返回元素的函数之间的区别
- amazon-web-services - ELK Community Beats 获取有关 ELK 的 AWS 日志
- python-3.x - 并行化初始边界值问题(有限差分)
- html - 我无法让导航栏子菜单垂直对齐
- go - 如何在 protobuf3 中存储 time.duration