rpy2 base.with 函数的语法

Syntax for rpy2 base.with function

我正在尝试找出用于绘制一些图表的 rpy2。我希望能够使用作为 R 基础的一部分的 with 函数,就像它在以下 R 代码中使用的那样:

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 和 pvalue 是该数据框的列。

当我使用 rpy2 的 importr 导入基础包时,我可以通过以下操作看到 'with' 在对象中:

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' 的语法是什么?

或者,虽然使用 'with' 是执行此操作的最 R 前向方法,但对于我不知道的相同问题,也许有更 rpy2 友好的方法。

Python 可能与它自己的 with() 命令发生冲突,后者需要紧跟其后的 space。这是与另一种语言交互的挑战。

尝试 运行 原生地使用 R 语法环绕 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))')