R 使用pmap()计算多个列的行平均值
我试图更好地理解R 使用pmap()计算多个列的行平均值,r,purrr,pmap,R,Purrr,Pmap,我试图更好地理解pmap()如何在数据帧中工作,当应用pmap()计算多个列的均值时,我得到了一个令人惊讶的结果 mtcars %>% mutate(comp_var = pmap_dbl(list(vs, am, cyl), mean)) %>% select(comp_var, vs, am, cyl) 在上面的示例中,comp_var等于其行中vs的值,而不是给定行中三个变量的平均值 我知道我可以通过使用 mtcars %>% rowwise() %&
pmap()
如何在数据帧中工作,当应用pmap()
计算多个列的均值时,我得到了一个令人惊讶的结果
mtcars %>%
mutate(comp_var = pmap_dbl(list(vs, am, cyl), mean)) %>%
select(comp_var, vs, am, cyl)
在上面的示例中,comp_var
等于其行中vs的值,而不是给定行中三个变量的平均值
我知道我可以通过使用
mtcars %>%
rowwise() %>%
mutate(comp_var = mean(c(vs, am, cyl))) %>%
select(comp_var, vs, am, cyl) %>%
ungroup()
。。。但是我想了解在这种情况下应该如何应用
pmap()
我们需要将mean
中x
参数的参数连接为
x:一个R对象。目前有用于数字/逻辑的方法
向量和日期、日期时间和时间间隔对象。
仅“trim=0”允许使用复数向量
因此,如果我们传递像x1、x2、x3等参数,它将根据用法进入…
参数
平均值(x,…)
例如
mean(5, 8) # x is 5
#[1] 5
mean(8, 5) # x is 8
#[1] 8
mean(c(5, 8)) # x is a vector with 2 values
#[1] 6.5
在rowwise
函数中,OP将元素连接到一个向量,而使用pmap
将mean
应用于第一个参数
out1 <- mtcars %>%
mutate(comp_var = pmap_dbl(list(vs, am, cyl), ~mean(c(...)))) %>%
dplyr::select(comp_var, vs, am, cyl)
提示:表示(1,2,3)
返回是什么意思?
out2 <- mtcars %>%
rowwise() %>%
mutate(comp_var = mean(c(vs, am, cyl))) %>%
dplyr::select(comp_var, vs, am, cyl) %>%
ungroup()
all.equal(out1, out2, check.attributes = FALSE)
#[1] TRUE