我做一個有序Logistic迴歸,並在此之後的指南分析:R Data Analysis Examples: Ordinal Logistic Regression如何rpy2「與」操作使用R
我的數據框(諮詢)看起來像:
n raingarden es_score consult_case
garden_id
27436 7 0 3 0
27437 1 0 0 1
27439 1 1 1 1
37253 1 0 3 0
37256 3 0 0 0
我在哪裏需要創建圖表來測試比例優勢假設的一部分,與在R中的命令如下:
(s <- with(dat, summary(es_score ~ n + raingarden + consult_case, fun=sf)))
(es_score是一個序排列得分與值s在0 - 4之間; n是整數; raingarden和consult_case,或0的二進制值1)
我有SF功能:
sf <- function(y) {
c('Y>=1' = qlogis(mean(y >= 1)),
'Y>=2' = qlogis(mean(y >= 2)),
'Y>=3' = qlogis(mean(y >= 3)))
}
在utils.r文件,我訪問如下:
from rpy2.robjects.packages import STAP
with open('/file_path/utils.r', 'r') as f:
string = f.read()
sf = STAP(string, "sf")
而想要沿着這樣的方向行事:
R = ro.r
R.with(work_case_control, R.summary(formula, fun=sf))
主要問題是R with
運營商被視爲一個python關鍵字,所以即使我用ro.r.with
訪問它,它仍然被認爲是一個python關鍵字。 (作爲一個方面說明:我試圖使用的r apply
方法來代替,卻得到了一個錯誤,TypeError: 'SignatureTranslatedAnonymousPackage' object is not callable
...我認爲這是指我的功能sf
?)
我也使用rpy2將R分配方法如下嘗試:
R('sf = function(y) { c(\'Y>=1\' = qlogis(mean(y >= 1)), \'Y>=2\' = qlogis(mean(y >= 2)), \'Y>=3\' = qlogis(mean(y >= 3)))}')
R('s <- with({0}, summary(es_score~raingarden + consult_case, fun=sf)'.format(consult))
但跑進在數據幀列名以某種方式導致錯誤的問題:RRuntimeError: Error in (function (file = "", n = NULL, text = NULL, prompt = "?", keep.source = getOption("keep.source"), : <text>:1:19: unexpected symbol 1: s <- with( n raingarden
我當然可以做到這一切在R,但我有一個Python非常複雜的ETL腳本,因此會傾向於使用rpy2將所有內容保存在python中(我嘗試過使用mord進行scipy-learn來運行我的調用,但它非常原始)。
任何建議現在是最受歡迎的。
編輯
我嘗試了各種組合@芭菲的建議,出線fun
說法是語法不正確,因爲每PyCharm解釋(見圖片與最終紅色高亮顯示): ...它不使用功能時,但我得到的錯誤TypeError: 'SignatureTranslatedAnonymousPackage' object is not callable
:不管預選賽是什麼,或者,我總是得到一個錯誤 是SyntaxError: keyword can't be an expression.
在另一方面,沒有資格,也沒有語法錯誤0作爲獲得:
from rpy2.robjects.packages import STAP with open('/Users/gregsilverman/development/python/rest_api/rest_api/scripts/utils.r', 'r') as f: string = f.read() sf = STAP(string, "sf")
考慮到這一點,我中的R創建的包與所述功能sf
,進口它,並嘗試了各種連擊與唯一的一個不產生錯誤,是:print(base._with(consult_case_control, R.summary(formula, fun=gms.sf)))
(GMS是在RI中對該軟件包的引用)。
輸出,雖然沒有任何意義:
Length Class Mode 3 formula call
我期待一個表ALA在加州大學洛杉磯分校的網站之一。有趣。我將嘗試在R中重新創建我的分析,僅僅是爲了它。我仍然想在Python中完成它。
感謝您提供這些提示。我認爲必須有一種方法來使用這樣的關鍵字,儘管我更喜歡其他解決方案。我確實嘗試了這些,並且在合格的'fun'參數中出現錯誤:'SyntaxError:keyword不能是表達式。' 這可能需要一些實驗,所以我會玩弄這個。 –
*摘要*包是什麼?如果使用基本R,則嘗試使用基本對象而不是「ro.r」來限定函數和* fun * arg。 – Parfait
我不認爲'樂趣'需要一個限定符。在PyCharm中,任何限定符都會拋出突出顯示的紅色語法錯誤,而沒有限定符顏色'fun'語法正確爲紫色(我將在此處附加圖像,但不能在註釋中)。因此,我相信這個語句應該是這樣的:'base._with(work_case_control,R.summary(formula,fun = sf))'...我相信我現在得到的錯誤:'NotImplementedError:Conversion' py2ri'沒有爲類型'''的對象定義,指的是我在R中實現'sf'函數。 –