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結合起來使用了。