计算数据框中某些列的方差

阿德

我正在尝试使用purrr::pmap从数据帧计算每行三个变量的方差base::var

可重现的示例:

library(dplyr)
library(purrr)

set.seet(123)

df <- data.frame(a = rnorm(10, 100, 5),
                 b = rnorm(10, 100, 5),
                 c = rnorm(10, 100, 5), 
                 d = "abc",
                 e = "cmc")

df <- df %>% 
  mutate(vars_var = pmap(list(a,b,c), ~ var(c(..1, ..2, ..3))))
df

不幸的是,这导致所有值都是NA有人能指出正确的方向吗

阿克伦

我们可以使用c串联到avector然后应用var

df %>% 
   mutate(vars_var = pmap_dbl(list(a,b,c), ~ var(c(...))))
#            a         b         c   d   e  vars_var
#1  107.99999 103.63304 102.34089 abc cmc  8.794236
#2   95.82441 101.63287  96.35934 abc cmc 10.305745
#3  105.78436  99.18291  99.01016 abc cmc 14.916436
#4   93.40284 103.69875 104.54950 abc cmc 38.496276
#5  109.37737  98.79907 104.43685 abc cmc 28.015604
#6  100.34486  96.36210 101.65905 abc cmc  7.607847
#7   99.64536 105.58825 100.36501 abc cmc 10.519687
#8  100.34628  99.93914 110.02011 abc cmc 32.562415
#9  103.09767 101.59083  96.83285 abc cmc 10.692810
#10 100.27754 102.85691 101.83375 abc cmc  1.686977

如果我们使用OP的方法,请unlist在连接后使用,因为它仍然是list

df %>%
   mutate(vars_var = pmap(list(a, b, c), ~ var(unlist(c(..1, ..2, ..3)))))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章