簡體   English   中英

將 R package pmultinom 與 PyRserve 一起使用

[英]Using R package pmultinom with PyRserve

我正在嘗試通過使用 pyRserve 在 Python 中使用 R package pmultinom,並將數字導入到代碼中。 我有以下錯誤:

REvalError:錯誤:未找到 object '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(…)

我收到一個錯誤,提示找不到 function。

這是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')"

並評估表達式並獲得 output

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM