Вот один вариант с pyper
, поскольку мы использовали его в производственных настройках, и он работал без каких-либо проблем.
from pyper import *
r = R(use_pandas=True)
num1 = 1
num2 = 2
num3 = 3
num4 = 4
num5 = 5
num6 = 6
num7 = 20000
vec1 = (.17649, .17542, .15276, .15184, .17227, .17122)
Нам не нужно создавать отдельные объекты, это может быть список или кортеж как в vec1
. Просто для демонстрации
r.assign("rnum1", num1)
r.assign("rnum2", num2)
r.assign("rnum3", num3)
r.assign("rnum4", num4)
r.assign("rnum5", num5)
r.assign("rnum6", num6)
r.assign("rnum7", num7)
r.assign("rvec1", vec1)
Создайте выражение
expr = "library(pmultinom); out <- pmultinom(lower = c(rnum1, rnum2, rnum3, rnum4, rnum5, rnum6), upper = rep.int(3630, 6), size = rnum7, probs = rvec1, method = 'exact')"
и оцените выражение и получите результат
r(expr)
r.get("out")
#0.95663799758361
-тестирование непосредственно со стороны R
num1 = 1
num2 = 2
num3 = 3
num4 = 4
num5 = 5
num6 = 6
num7 = 20000
vec1 = c(.17649, .17542, .15276, .15184, .17227, .17122)
pmultinom(lower = c(num1, num2, num3, num4, num5, num6),
upper = rep.int(3630, 6), size = num7, probs = vec1,
method = 'exact')
#[1] 0.956638