将 R 包 pmultinom 与 PyRserve 一起使用
Using R package pmultinom with PyRserve
我正在尝试通过使用 pyRserve 在 Python 中使用 R 包 pmultinom,并将数字导入到代码中。我遇到以下错误:
REvalError:错误:找不到对象 'pmultinom'。
import pyRserve
num1 = 1
num2 = 2
num3 = 3
num4 = 4
num5 = 5
num6 = 6
vec1 = (.2,.3,.5)
r_script = '''
install.packages(pmultinom)
library(pmultinom)
pmultinom(
'''
full_rscript =( r_script + 'lower=c(' + str(num1) + ',' + str(num2) + ',' + str(num3) +
'), upper=c(' + str(num4) + ',' + str(num5) + ',' +
str(num6) +
'), size=' + str(num7) + ', probs=' + str(vec1) + ')'
)
output = conn.eval(full_rscript)
当我用
尝试类似的代码时
conn.r.pmultinom(…)
我收到找不到函数的错误消息。
这是 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
我正在尝试通过使用 pyRserve 在 Python 中使用 R 包 pmultinom,并将数字导入到代码中。我遇到以下错误:
REvalError:错误:找不到对象 'pmultinom'。
import pyRserve
num1 = 1
num2 = 2
num3 = 3
num4 = 4
num5 = 5
num6 = 6
vec1 = (.2,.3,.5)
r_script = '''
install.packages(pmultinom)
library(pmultinom)
pmultinom(
'''
full_rscript =( r_script + 'lower=c(' + str(num1) + ',' + str(num2) + ',' + str(num3) +
'), upper=c(' + str(num4) + ',' + str(num5) + ',' +
str(num6) +
'), size=' + str(num7) + ', probs=' + str(vec1) + ')'
)
output = conn.eval(full_rscript)
当我用
尝试类似的代码时conn.r.pmultinom(…)
我收到找不到函数的错误消息。
这是 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