2015-11-07 63 views
0

我試圖找出rpy2用於繪製一些圖表。我希望能夠與功能的的r基地的一部分,像它用它下列R-代碼中使用:語法rpy2 base.with功能

with(res, plot(log2FoldChange, -log10(pvalue), pch=20, main="Volcano plot", xlim=c(-2.5,2))) 
with(subset(res, padj<.05), points(log2FoldChange, -log10(pvalue), pch=20, col="red")) 

其中RES是一個數據幀和log2FoldChange和P值是從該數據幀列。

當我使用rpy2的importr導入基礎包,我可以看到,「用」是對象做:

from rpy2.robjects.packages import importr 
base = importr('base') 
dir(base) 

不過,我似乎無法找出正確的語法:

from rpy2.robjects.packages import importr 
from rpy2 import robjects 
base = importr('base') 
base.with(res, robjects.r.plot(log2FoldChange, padj)) 

    File "<stdin>", line 1 
    base.with(res, robjects.r.plot(log2FoldChange, padj)) 
      ^
SyntaxError: invalid syntax 

不幸的是,在尋找的東西像「base.with」已被證明難以解決。我的問題是:在rpy2 python代碼中使用'base.with'的語法是什麼?

另外,在使用「與」是至多r前進的方法來這樣做,也許有一個更rpy2友好的方式來,我是不知道這個同樣的問題。

回答

1

的Python可能會得到有自己的with()命令,它需要一個空間後馬上發生衝突。這是與另一種語言接口的挑戰。

嘗試在圍繞robjects功能包裹ř語法本地運行的命令。下面我將Python對象傳遞給R的全局環境作用域。

import rpy2.robjects as ro 

ro.globalenv['res'] = res_frompy 
ro.globalenv['log2FoldChang'] = log2FoldChang_frompy 
ro.globalenv['padj'] = padj_frompy 

ro.r('with(res, plot(log2FoldChange, padj))') 
+0

+1因爲看着這個我認爲它肯定會奏效。明天測試 - 之後我會標記爲正確,因爲我確信它會起作用。這實際上正是我需要知道的,我甚至沒有專門爲此詢問。 – sage88