首先,我是rpy2 / jupyter的新手,所以如果这里不是问我问题的地方,请不要评判我。
我试图使用R和Python建立一个用于数据分析的集成工作流,并遇到以下错误:
我在Ubuntu 19.04。使用木星1.0.0、Python3.7.4、R3.5.1、irkernel 1.0.2和rpy2 3.1.0运行conda环境,并通过R安装了R包Seurat。
当我使用R内核创建一个木星笔记本时,我可以用library(Seurat)
加载Seurat。
我还可以使用rpy2和rmagic在python中使用R代码,如:
%load_ext rpy2.ipython
%%R
data(allen, package = 'scRNAseq')
adata_allen <- as(allen, 'SingleCellExperiment')
但是,当我试图使用rpy2加载Seurat时,内核会崩溃:
%%R
library(Seurat)
我得到了以下信息:
内核重新启动 内核似乎已经死了。它将自动重新启动
木星在命令行中给出了以下消息:
[I 16:39:01.388 NotebookApp] KernelRestarter: restarting kernel (1/5), keep random ports
kernel 23284ec0-63d5-4b61-9ffa-b52d19851eab restarted
注意,其他库(如library(dplyr)
)使用rpy2加载得很好。
我的完整conda环境可以在附加的文本文件中找到。
我只是不知道是什么引起了这个问题。有没有办法从木星那里得到更详细的错误信息?
您的帮助将不胜感激!
问候费利克斯
发布于 2019-11-02 15:29:51
R包Seurat
正在使用另一个名为reticulate
的R包,它提供了一个从R到Python的桥梁。
不幸的是,每当涉及rpy2
和reticulate
时,R都会被初始化两次,这不可避免地会导致分段错误。在编写本报告时,这仍然是一个开放的bug。rpy2
端的问题跟踪(可以在那里找到到跟踪的reticulate
端的链接)如下:
https://bitbucket.org/rpy2/rpy2/issues/456/reticulate-rpy2-sharing-r-process
发布于 2020-01-06 01:16:15
我对你也有同样的问题。但我降到了3.0.2,你的问题就解决了。要用conda为rpy2使用用户定义的R内核,首先(在imoort rpy2之前)运行代码
# user defined R installation
import os
os.environ['R_HOME'] = '/path/to/miniconda/envs/seurat/lib/R' #path to your R installation
os.environ['R_USER'] = '/path/to/miniconda/lib/python3.7/site-packages/rpy2' #path depends on where you installed Python.
发布于 2022-01-27 12:45:37
这对我起了作用,同时也面临着内核在从rpy2导入robjects时死掉的问题:
import os
os.environ['R_HOME'] = '/Users/<your user>/anaconda3/envs/<env name>/lib/R'
# import your desired module
from rpy2.robjects.packages import importr
https://stackoverflow.com/questions/58611486
复制相似问题