2017-02-12 18 views
0

Как мои ноги мокрые с purrr.Передача векторных и одиночных значений для функции с pmap

Я оцениваю различные комбинации параметров для бета-распределения, и я пытаюсь передать вектор значений x и параметры для распределения.

Смотрите код ниже:

library(tidyr) 
library(purrr) 
library(dplyr) 

x <- seq(0.01, 0.99, 0.01) 
alpha <- c(0.1, 0.5, 1:5, 10) 
beta <- c(0.5, 1, 2, 5) 


df <- expand.grid(alpha = alpha, beta = beta, x = x) %>% 
    nest(x) %>% 
    mutate(plotdata = pmap(list(data$x, alpha, beta), dbeta)) %>% 
    unnest() 

Что такое правильный синтаксис для ртар в этом случае?

ответ

0

Давайте рассмотрим первый случай в качестве примера.

x = 0.01 
alpha = 0.1 
beta = 0.5 

dbeta(shape1 = alpha, shape2 = beta, x = x) 
# [1] 5.600381 

Второй пример был бы:

x = 0.01 
alpha = 0.5 
beta = 0.5 

dbeta(shape1 = alpha, shape2 = beta, x = x) 
# [1] 3.199135 

Если это вывод, который вы ожидаете, то мы могли бы обобщать:

x <- seq(0.01, 0.99, 0.01) 
alpha <- c(0.1, 0.5, 1:5, 10) 
beta <- c(0.5, 1, 2, 5) 

df <- expand.grid(alpha = alpha, beta = beta, x = x) 

args_beta <- with(df, list(x = x, shape1 = alpha, shape2 = beta)) 
args_beta %>% 
    pmap(dbeta) %>% 
    unlist() %>% 
    as.data.frame() %>% 
    cbind(df, .) 

Тогда результат будет:

alpha beta x   . 
1 0.1 0.5 0.01 5.600381e+00 
2 0.5 0.5 0.01 3.199135e+00 
3 1.0 0.5 0.01 5.025189e-01 
4 2.0 0.5 0.01 7.537784e-03 
5 3.0 0.5 0.01 9.422230e-05 
6 4.0 0.5 0.01 1.099260e-06 
+0

Спасибо! Но это не дает мне то, что мне нужно. Результат должен быть фреймом данных с 3168 строк = длина (x) * длина (альфа) * ​​длина (бета) –

+0

Если вы нашли время ответить на вопрос, пожалуйста, сделайте еще один шаг и объясните это не только помогать OP, а также помогать всем, кто может попасть на эту страницу с тем же вопросом. Имейте в виду, что не у всех одинаковый опыт и понимание. Ваш вопрос был отмечен как «низкое качество», пожалуйста, уделите некоторое время его улучшению. – GabrielOshiro

+0

Вы полагаетесь на пакеты, которые вы не указали ... – PatrickT