рассчитать дисперсию определенных столбцов в кадре данных - PullRequest
0 голосов
/ 30 ноября 2018

Я пытаюсь вычислить дисперсию трех переменных для каждой строки из кадра данных, используя 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.Может ли кто-то указать в правильном направлении

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Или переместить 100% к базе R:

apply(df[c("a", "b", "c")], 1, var)
0 голосов
/ 30 ноября 2018

Мы можем использовать c для конкатенации к vector и затем применять 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)))))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...