一個R包—reticulate—在R中調用Python


  R語言和python語言是生信行業經常使用的兩個計算機語言,R語言具有統計和畫圖方面的優勢,但是R語言在文件讀寫上的速度實在不敢恭維;Python具有較快的文件讀寫功能,但是其統計和畫圖卻不如R語言用着方便。
  今天介紹一個R包——“reticulate”,可以在R語言中直接調用Python,這樣就可以把Python讀寫的優勢和R語言統計畫圖的優勢結合起來了。
  首先安裝R包,對於R包的安裝,可以以下兩種方式,一個是R自帶的install.packages(),一個是基於BiocManager包的BiocManager::install(),推薦使用BiocManager::install(),這種方法可以安裝的包更多一些,較為方便。
BiocManager::install("reticulate")
  reticulate包實現在R中直接調用Python命令,並且可以直接使用Python命令產生的變量。
  reticulate包提供repl_python()和exit命令,實現進入Python代碼塊和退出Python代碼塊,在repl_python()和exit之間的代碼為Python代碼,其他代碼為R代碼。
示例:
repl_python() ###進入python代碼快
fileIN = open("E:/a.txt")
a = []
for i in fileIN:
  a.append(i)
fileIN.close()
exit ###退出代碼塊
  以上Python代碼讀取了一個叫a.txt的文件,並把每行內容存進列表里(Python里的列表相當於R里的向量)。
  接下來展示退出Python代碼塊后如何使用在Python里的變量。
aArr <- py$a
for(i in aArr){
print(i)
}

    使用py$a就把Python代碼塊里的變量賦值給了R里的變量。

  如果想要反向使用,即想在Python代碼塊里使用R的變量,怎么用呢?以下是示例:

a <- py$a
print(length(a))

repl_python()
b = r.a ###使用r.a就把R里的變量a賦值給了Python代碼塊里的變量b
print(len(b))
exit

   這樣,利用reticulate包我們就可以把Python和R結合起來使用了。

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM