【问题标题】:Syntax for rpy2 base.with functionrpy2 base.with 函数的语法
【发布时间】:2015-11-07 00:35:25
【问题描述】:

我正在尝试找出 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 r rpy2


    【解决方案1】:

    Python 可能与它自己的 with() 命令发生冲突,该命令后面需要一个空格。这是与另一种语言交互的挑战。

    尝试以围绕robjects 函数的R 语法本地运行命令。下面我将 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))')
    

    【讨论】:

    • +1 因为看着这个我认为它肯定会起作用。明天测试-我会在此之后标记为正确,因为我确信它会起作用。这实际上正是我需要知道的,我什至没有专门要求这个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-07
    • 2017-02-18
    • 1970-01-01
    • 2015-03-30
    • 1970-01-01
    • 1970-01-01
    • 2020-08-22
    相关资源
    最近更新 更多