【问题标题】:Console output using rpy2 does not work in Jupyter Notebook使用 rpy2 的控制台输出在 Jupyter Notebook 中不起作用
【发布时间】:2021-02-23 13:24:56
【问题描述】:

使用 Jupyter Notebook,当我从使用 R 内核的笔记本执行 R 包(在我的情况下为 Climatol)中的函数时,消息会显示为输出,报告正在执行的过程。没什么新鲜的。

使用的代码块是这样的:

library(maps)
library(mapdata)
library(climatol)

# Apply function (from R kernel)
homogen('Vel',2011,2012,tinc='6 hour',expl=TRUE)

现在,使用另一个笔记本中的 Python 内核,当我通过 rpy2 应用相同的参数调用相同的函数时,我没有得到与上一张图片中出现的相同消息。相反,我得到了这个:

这次使用的代码块是这样的:

from rpy2.robjects import r
from rpy2.robjects.packages import importr

importr('maps')
importr('mapdata')
importr('climatol')

# Apply function ( from Python kernel)
r["homogen"]("Vel",2011,2012,tinc="6 hour",expl=r['as.logical']("T"))

我从 Sublime Text 运行了上面提到的 Python 代码,在这种情况下会显示消息:

从 Windows 控制台运行代码时也会显示这些消息,这让我认为缺点是 Jupyter。话虽如此,如何使用 Jupyter 获取这些消息?

我使用的是 Python 3.7,rpy2 的版本是 2.9.4

感谢您的帮助。

【问题讨论】:

  • 请发布您的 rpy2 的完整代码块(minimal reproducible example 的行数足够)而不是 images。您是在 Python 2 还是 Python 3 内核中运行?如果您在任何 IDE 之外的命令行上运行 .py 脚本会发生什么?如果你把电话放在print(...).
  • 你好@Parfait。我已根据您的建议编辑了问题。谢谢!
  • Documentation 表示:此函数不返回任何值,其结果将保存到与输入文件具有相同基本名称和扩展名的文件中。因此,即使 Jupyter 屏幕上没有输出呈现,结果是否会保存到外部文件中?
  • 你好。是的,输出保存到外部文件,但我需要它们出现在控制台中,因为我需要生成程序报告。

标签: python r jupyter-notebook rpy2


【解决方案1】:

rpy2 在 Windows 上不完全支持。用于设置如何处理 R 输出的回调可能无法正常工作,这会导致您观察到的问题。

如果这将在更新的 rpy2 版本中得到改进。例如,最新的 rpy2 版本是 3.3.6。

否则,为了在 Windows 上获得更好的兼容性,请考虑在 Docker 中运行 rpy2/jupyter,或者如果它可以在 WSL(Linux 的 Windows 子系统)中运行。

【讨论】:

    猜你喜欢
    • 2021-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多