如何在jupyter中使用RMagic进行控制台文本输出

2024-06-10 07:11:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用jupyter和R语言的RMagic单元。它工作正常,只是简单的R控制台输出没有出现在笔记本中,而绘图工作正常。启动笔记本的外壳显示缺少的输出

例如,python单元格如下所示:

%load_ext rpy2.ipython
import numpy as np





Xp=np.array([-1,-2,-3,-4,-5])
Yp=1./Xp
print("\n Xp=",Xp,"   Yp=",Yp)

产出如预期:

Xp=[-1-2-3-4-5]Yp=[-1-0.5-0.33333-0.25-0.2]

然后是一个简单的R单元

%%R -i Xp -i Yp -o Zr

Zr<-c(1,1,1,1,1)
yr=1./Xp+Zr
plot(Xp,yr)

这也很好,得到了预期的情节 enter image description here

最后是下一个R细胞

%%R
Y <- c(2,4,3,9)
X <- c(1,4,5,7) 
print(Y)
mean(X)

最后一个单元格在笔记本中没有显示任何结果,但是可以在启动jupyter的shell中找到结果

我正在使用Python3.7.4、笔记本服务器6.0.1iPython7.8.0、R3.6.1、rpy2.9.4Windows10和anaconda

中提出的解决方案 https://anaconda.zendesk.com/hc/en-us/articles/360023857294-R-Magic-in-Windows-and-Jupyter-Notebook-Output-Issue- 不适合我

有什么想法吗?提前谢谢

更新

正如建议的那样,我试着用

pip install rpy2-3.4.2.tar.gz

使用测量信息:已成功安装rpy2-3.4.2

不幸的是,R.dll不再加载,即使错误消息中的给定路径名包含R.dll

运行简单脚本

import os
os.environ["R_HOME"] = "C:\\Users\\xxxxxxxx\\MyApps\\anaconda3\\Lib\\R\\"
#set R bin
os.environ['path'] += r';C:\\Users\\xxxxxxxx\\MyApps\\anaconda3\\Lib\\R\\bin;' 

import rpy2.robjects as robjects

print("Hello")

在脚本中可以很好地工作,但在jupyter笔记本中不行。再次显示相同的错误消息:

.........
.........
~\MyApps\anaconda3\lib\site-packages\rpy2\rinterface_lib\openrlib.py in _dlopen_rlib(r_home)
     35         raise ValueError('The library path cannot be None.')
     36     else:
---> 37         rlib = ffi.dlopen(lib_path)
     38     return rlib
     39 

OSError: cannot load library 'C:\Users\xxxxxxxx\MyApps\anaconda3\Lib\R\bin\x64\R.dll': error 0x7e

在处理线路时,与原始jupyter笔记本相同 %加载_extrpy2.ipython

使用R jupyter笔记本可以很好地工作,因此那里的路径没有问题

谢谢你的建议

已解决

将以下路径添加到PATH变量

C:\Users\xxxxxxx\MyApps\anaconda3\Lib\R\bin

C:\Users\xxxxxxx\MyApps\anaconda3\Library\mingw-w64\lib

C:\Users\xxxxxxx\MyApps\anaconda3\Library\mingw-w64\bin

并将R_HOME变量定义为

C:\Users\xxxxxxx\MyApps\anaconda3\Lib\R\n

解决了R.dll的问题

关于丢失输出的原始问题现在也解决了(使用rpy2的较新版本3.4.2)


Tags: importbinlib笔记本jupyterusersxpdll