溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

同一個(gè)項(xiàng)目中讓R和Python無縫工作的方法

發(fā)布時(shí)間:2021-07-12 10:34:38 來源:億速云 閱讀:97 作者:chen 欄目:編程語言

本篇內(nèi)容主要講解“同一個(gè)項(xiàng)目中讓R和Python無縫工作的方法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“同一個(gè)項(xiàng)目中讓R和Python無縫工作的方法”吧!

Python在某些方面做得最好,R在某些方面做得最好,因此,如果我們?cè)谛枰臅r(shí)候可以同時(shí)使用這兩種方法,那么我們就可以發(fā)揮出最好的性能。 在最近的示例中,我想創(chuàng)建一個(gè)Shiny應(yīng)用程序來生成參數(shù)化的Powerpoint文檔,這個(gè)應(yīng)用我是用R的tidyverse對(duì)我的數(shù)據(jù)進(jìn)行編碼處理,使用Python編寫了Powerpoint編輯代碼,因?yàn)檫@在python-pptx包中很容易。

現(xiàn)在,在RStudio IDE中使用兩種語言進(jìn)行操作確實(shí)非常容易。 為此,您需要在R中安裝和加載網(wǎng)狀軟件包。您可以執(zhí)行以下五項(xiàng)操作,以使您在同一項(xiàng)目中獲得兩種語言的無縫編碼體驗(yàn):

在項(xiàng)目啟動(dòng)時(shí)定義Python環(huán)境

為避免與使用錯(cuò)誤的Python解釋器相關(guān)問題,首先需要在項(xiàng)目啟動(dòng)時(shí)通過創(chuàng)建.Rprofile文件并將其保存在項(xiàng)目目錄中來定義Python環(huán)境。 您的.Rprofile包含將在您的項(xiàng)目啟動(dòng)時(shí)執(zhí)行的代碼。 我通常在.Rprofile中有這兩行代碼:

Sys.setenv(RETICULATE_PYTHON = "<path>")  print(paste("Python environment forced to", Sys.getenv("RETICULATE_PYTHON")))

其中,是您要使用的Python環(huán)境中Python可執(zhí)行文件的路徑。 第一個(gè)命令將其設(shè)置為您的python可執(zhí)行文件。 第二個(gè)命令將打印此確認(rèn),該確認(rèn)將在您每次啟動(dòng)項(xiàng)目時(shí)顯示在您的終端中。 這是我啟動(dòng)一個(gè)項(xiàng)目時(shí)終端的外觀:

同一個(gè)項(xiàng)目中讓R和Python無縫工作的方法

使用repl_python()在Python中實(shí)時(shí)編碼

在項(xiàng)目中如果需要測(cè)試Python和R可以使用 Reticulate軟件包中的repl_python()函數(shù)將R終端切換到Python終端,以便您可以在Python中進(jìn)行實(shí)時(shí)編碼。 您可以使用exit命令退出它,然后在R中編寫更多代碼,然后再回到Python終端,它仍然會(huì)記住上一個(gè)會(huì)話中的所有對(duì)象,這意味著它很容易在各種語言之間無縫地移動(dòng)。 這是一個(gè)簡(jiǎn)單的示例:

同一個(gè)項(xiàng)目中讓R和Python無縫工作的方法

在Python和R之間交換對(duì)象

可以在Python和R之間交換任何相當(dāng)標(biāo)準(zhǔn)的數(shù)據(jù)對(duì)象,例如值,列表和dataframes 。要在Python中使用名為myrobject的R對(duì)象,可以使用r.myrobject進(jìn)行調(diào)用。 要在R中使用名為mypythonobject的Python對(duì)象,可以使用py $ mypythonobject進(jìn)行調(diào)用。 這是另一個(gè)實(shí)際的操作示例,其中我將R中的themtcars數(shù)據(jù)集引入了Python:

同一個(gè)項(xiàng)目中讓R和Python無縫工作的方法

數(shù)據(jù)對(duì)象將根據(jù)不同的語言轉(zhuǎn)換為它們的等效結(jié)構(gòu)。 例如,R中的列表將被翻譯成Python中的字典:

同一個(gè)項(xiàng)目中讓R和Python無縫工作的方法

將Python函數(shù)轉(zhuǎn)換為R函數(shù)

當(dāng)同時(shí)使用這兩種語言時(shí),你最終會(huì)需要將Python代碼作為一個(gè)R的函數(shù)來執(zhí)行.如果將編寫的Python函數(shù)寫到一個(gè)文件中,然后R中調(diào)用source_python(),那么這個(gè)文件可以以源代碼文件的形式使用。下面是一個(gè)簡(jiǎn)單的例子,我寫了一個(gè)Python函數(shù)將兩個(gè)數(shù)字相加,并將其保存在文件sumof.py中:

def sumof(a, b):  return a+b

現(xiàn)在,我可以獲取sumof.py并將其變成和R函數(shù):

同一個(gè)項(xiàng)目中讓R和Python無縫工作的方法

創(chuàng)建包含R和Python代碼的MD文檔

正確設(shè)置.Rprofile后,您可以創(chuàng)建具有兩種語言代碼塊的文檔,并且可以在代碼塊之間交換對(duì)象。 以下是一些簡(jiǎn)單的R Markdown代碼,用以說明這一點(diǎn):

同一個(gè)項(xiàng)目中讓R和Python無縫工作的方法

這會(huì)產(chǎn)生以下輸出:

同一個(gè)項(xiàng)目中讓R和Python無縫工作的方法

同樣,你可以用一種語言編寫函數(shù),在另一種語言中輕松使用它們:

同一個(gè)項(xiàng)目中讓R和Python無縫工作的方法

對(duì)我來說,這個(gè)功能讓我的工作中有了更多的可能。我希望這些技巧能夠幫助您開始探索Python和R所提供的最佳功能。

到此,相信大家對(duì)“同一個(gè)項(xiàng)目中讓R和Python無縫工作的方法”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI