我正在尝试使用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] 删除。
我来说两句