[英]R, Python: install packages on rpy2
我使用R
通過我的Python腳本rpy2
庫,我需要一個包,是不是在河的默認安裝如何安裝呢?
install.packages("DirichletReg", repos="http://r-forge.r-project.org")
不會工作。
在 Python 上:
>>> install.packages("DirichletReg", repos="http://r-forge.r-project.org")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'install' is not defined
來自 R:
> install.packages("DirichletReg", repos="http://r-forge.r-project.org")
Installing package(s) into ‘/usr/local/lib/R/site-library’
(as ‘lib’ is unspecified)
Warning message:
In getDependencies(pkgs, dependencies, available, lib) :
package ‘DirichletReg’ is not available (for R version 2.14.1)
里卡多的回答不再有效。
要從 Python 安裝,我們可以使用utils.install_packages
函數:
from rpy2.robjects.packages import importr
utils = importr('utils')
(該utils
包是R.utils
包,其 pdf 文檔可以在這里找到: https : R.utils
- 或者,更直接地,是更詳細的install.packages
函數我們使用的文檔: https://www.rdocumentation.org/packages/utils/versions/3.6.2/topics/install.packages 。它在 Python 中重命名為install_packages
,因為.
不是合法 Python 名稱的一部分,因為它在 R 中。)
接下來,您需要決定從哪個 repo 獲取包。
您可以在使用repos
參數調用utils.install_packages
時聲明 repo:
utils.install_packages('DirichletReg', repos="https://cloud.r-project.org")
或者你可以在調用utils.install_packages
之前設置鏡像
utils.chooseCRANmirror(ind=1) # select the first mirror in the list
要么
utils.chooseBioCmirror(ind=1) # select the first mirror in the list
否則 Python/R 將嘗試啟動交互式鏡像選擇器(這可能適用於您的設置,也可能不適用)。
然后,對於單個包:
utils.install_packages('DirichletReg')
或者對於多個包,傳遞一個字符向量:
from rpy2.robjects.vectors import StrVector
package_names = ('ggplot2', 'hexbin')
utils.install_packages(StrVector(package_names))
這些示例改編自rpy2 文檔和install.packages
文檔 - 在我上次編輯時,文檔仍然說要這樣做。
運行pytest
,Aaron 的回答使我的 Python 掛起,R 不斷給出錯誤消息,可能是因為:
在不先選擇鏡像的情況下調用
install_packages()
將要求用戶交互選擇鏡像。
根據rpy2 文檔,我使用了這個有效的方法:
from rpy2 import robjects
import rpy2.robjects.packages as rpackages
utils = rpackages.importr('utils')
utils.chooseCRANmirror(ind=1)
utils.install_packages("DirichletReg")
DirichletReg = rpackages.importr("DirichletReg")
這個怎么樣
>>> import rpy2.interactive as r
>>> r.importr("utils")
>>> package_name = "DirichletReg"
>>> r.packages.utils.install_packages(package_name)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.