相关疑难解决方法(0)

如何使用purrr中的map与dplyr :: mutate基于列对创建多个新列

我必须使用R来关注问题.简而言之,我想基于数据框中不同列对的计算在数据帧中创建多个新列.

数据如下:

df <- data.frame(a1 = c(1:5), 
                 b1 = c(4:8), 
                 c1 = c(10:14), 
                 a2 = c(9:13), 
                 b2 = c(3:7), 
                 c2 = c(15:19))
df
a1 b1 c1 a2 b2 c2
1  4 10  9  3 15
2  5 11 10  4 16
3  6 12 11  5 17
4  7 13 12  6 18
5  8 14 13  7 19
Run Code Online (Sandbox Code Playgroud)

输出应该如下所示:

a1 b1 c1 a2 b2 c2 sum_a sum_b sum_c
1  4 10  9  3 15    10     7    25
2  5 …
Run Code Online (Sandbox Code Playgroud)

r dplyr purrr mutate

10
推荐指数
4
解决办法
7353
查看次数

使用purrr和预定义函数添加多个输出变量

采用这个简单的数据集和函数(代表更复杂的问题):

x <- data.frame(a = 1:3, b = 2:4)
mult <- function(a,b,n) (a + b) * n
Run Code Online (Sandbox Code Playgroud)

使用base R Map我可以这样做以向量化方式添加2个新列:

ns <- 1:2
x[paste0("new",seq_along(ns))] <- Map(mult, x["a"], x["b"], n=ns)
x
#  a b new1 new2
#1 1 2    3    6
#2 2 3    5   10
#3 3 4    7   14
Run Code Online (Sandbox Code Playgroud)

purrr尝试通过pmap列表输出接近:

library(purrr)
library(dplyr)
x %>% select(a,b) %>% pmap(mult, n=1:2)
#[[1]]
#[1] 3 6
#
#[[2]]
#[1]  5 10
#
#[[3]]
#[1]  7 14
Run Code Online (Sandbox Code Playgroud)

我尝试pmap_dfr将此映射回新列时似乎错误了. …

r function purrr

6
推荐指数
1
解决办法
773
查看次数

标签 统计

purrr ×2

r ×2

dplyr ×1

function ×1

mutate ×1