R Вызов функции выдает ошибку «Неверное количество параметров; должно быть 4.»Как отформатировать код, чтобы функция вызывалась правильно? - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть очень простой пример, который я пытаюсь запустить, который вызывает функцию R из внешнего пакета.

Я использую этот пакет [BTYD] (https://cran.r -project.org / web / packages / BTYD / BTYD.pdf ).

library(BTYD)  
library(dplyr) 


INPUT <- data.frame(R = 1:2, ALPHA = 3:4, S = 4:5, 
    BETA = 6:7, X = 8:9, T_X = 10:11, T_CAL = 12:13, D = 14:15 )

res <- transmute(INPUT, output = BTYD::pnbd.DERT(params = c(R,ALPHA,S,BETA),
                                                  x = X,
                                                  t.x = T_X,
                                                  T.cal = T_CAL, 
                                                  d = D))

Когда я запускаю это в R Studio, я получаю следующий вывод

Ошибка в mutate_impl (.data, dots): Ошибка оценки: Ошибка в pnbd.DERT: Неправильноколичество параметров;должно быть 4 ..

Не совсем уверен, почему это не работает, потому что, когда я заменяю все переменные в параметрах X, T_X, T_CAL и D случайными числами, он вычисляется без ошибок.

Для конкретной функции в документации требуется, чтобы params был вектором

Параметры Pareto / NBD - вектор с r, alpha, s и beta в указанном порядке.r и альфа - ненаблюдаемые параметры для процесса транзакции NBD.s и бета - ненаблюдаемые параметры для процесса отсчета Парето (экспоненциальная гамма)

1 Ответ

0 голосов
/ 12 апреля 2019

Так что после некоторой суматохи я нашел решение.Использование функции rowwise().

output <- INPUT %>%
  rowwise() %>%
  transmute(output = BTYD::pnbd.DERT(params = c(R,ALPHA,S,BETA),
                                     x = X,
                                     t.x = T_X,
                                     T.cal = T_CAL,
                                     d = D))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...