使用python的rpy2进行调用R

import os
os.environ['R_HOME'] = "C:\\Users\\aohan\\Project\\iris\\software\\R-4.2.1"
if "R-4.2.1" not in os.environ['path']:os.environ["PATH"] = "./software/R-4.2.1/bin/x64" + ";" + os.environ["PATH"]
from rpy2 import robjectsrobjects.r('''library(org.Hs.eg.db)''')

执行 robjects.r('''library(org.Hs.eg.db)''') 这句时报错:

Traceback (most recent call last):File "C:\app\python3.9\lib\asyncio\coroutines.py", line 124, in corores = func(*args, **kw)File "C:\Users\aohan\Project\iris\flow-gui\test\rcode\test1.py", line 36, in testrobjects.r('''library(org.Hs.eg.db)''')File "C:\app\python3.9\lib\site-packages\rpy2\robjects\__init__.py", line 459, in __call__res = self.eval(p)File "C:\app\python3.9\lib\site-packages\rpy2\robjects\functions.py", line 203, in __call__return (super(SignatureTranslatedFunction, self)File "C:\app\python3.9\lib\site-packages\rpy2\robjects\functions.py", line 126, in __call__res = super(Function, self).__call__(*new_args, **new_kwargs)File "C:\app\python3.9\lib\site-packages\rpy2\rinterface_lib\conversion.py", line 45, in _cdata = function(*args, **kwargs)File "C:\app\python3.9\lib\site-packages\rpy2\rinterface.py", line 815, in __call__raise embedded.RRuntimeError(_rinterface._geterrmessage())File "C:\app\python3.9\lib\site-packages\rpy2\rinterface_lib\_rinterface_capi.py", line 439, in _geterrmessageres = _string_getitem(res, 0)File "C:\app\python3.9\lib\site-packages\rpy2\rinterface_lib\_rinterface_capi.py", line 285, in _string_getitemres = conversion._cchar_to_str(File "C:\app\python3.9\lib\site-packages\rpy2\rinterface_lib\conversion.py", line 136, in _cchar_to_strs = ffi.string(c).decode(encoding)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb2 in position 33: invalid start byte

调试时发现,在"C:\app\python3.9\lib\site-packages\rpy2\rinterface_lib\conversion.py"文件中

这两句decode解码,默认encoding方式是"utf-8",但是当R语言返回的信息中,如这里它返回的是"不存在叫'org.Hs.eg.db'这个名字的程辑包",信息中有中文就导致编码不正常,如下修改即可解决:

def _cchar_to_str(c, encoding: str) -> str:# TODO: use isString and installTrChartry:s = ffi.string(c).decode(encoding)except Exception as e:s = ffi.string(c).decode('GBK')return sdef _cchar_to_str_with_maxlen(c, maxlen: int, encoding: str) -> str:# TODO: use isString and installTrChartry:s = ffi.string(c, maxlen).decode(encoding)except Exception as e:s = ffi.string(c, maxlen).decode("GBK")return s

Python调用R出现“UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xb2” 问题相关推荐

  1. python 读取数据出现UnicodeDecodeError:: 'utf-8' codec can't decode byte 0xc8 in position 0: invalid contin

    之前写程序时也出现过类似错误,每次解决了到第二次遇见又忘了具体方法,这次记录一下. 一.字符编码问题 先介绍一下字符编码问题 1.ASCLL与GB2312 由于计算机是美国人发明的,因此,最早只有12 ...

  2. python 读取数据出现UnicodeDecodeError:: ‘utf-8‘ codec can‘t decode byte 0xc8 in position 0: invalid contin

    解决方法: 读取时也可以用二进制模式打开的文件(包括模式参数中的'rb')将内容作为字节对象,而不进行任何解码. 然后使用line.decode('utf-8',errors = 'ignore')解 ...

  3. 报错:UnicodeDecodeError:: ‘utf-8‘ codec can‘t decode byte 0xc8 in position 0: invalid contin

    python读取数据时出现:UnicodeDecodeError:: 'utf-8' codec can't decode byte 0xc8 in position 0: invalid conti ...

  4. blender导入c4d obj模型出现UnicodeDecodeError:: ‘utf-8‘ codec can‘t decode byte 0xc8 in position 0:

    错误描述 blender导入c4d obj模型出现UnicodeDecodeError:: 'utf-8' codec can't decode byte 0xc8 in position 0 bal ...

  5. (已解决)pycharm调试报错-UnicodeDecodeError:‘utf-8‘ codec can‘t decode byte 0xe8 in position 1023

    背景 使用pycharm在调试项目的时候,出现文章标题的错误. r = r.decode('utf-8')UnicodeDecodeError: 'utf-8' codec can't decode ...

  6. Python报错SyntaxError: (unicode error) ‘utf-8‘ codec can‘t decode byte 0xc5 in position 0: invalid

    python报错:SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0xc5 in position 0: invalid co ...

  7. python读取字符报错:‘utf-8‘ codec can‘t decode byte 0xbd in position 2: invalid start byte

    python读取字符报错:'utf-8' codec can't decode byte 0xbd in position 2: invalid start byte 原因 解决方法 原因 utf-8 ...

  8. 【Python 3】SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0xcf in position 0

    Django中views.py文件添加含中文代码后报错. 问题描述 用Django命令自动生成代码文件,结果在加入含有中文的代码后报错,将中文改为英文后能够成功运行. 原因 文件存储的格式是ANSI, ...

  9. python报错UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x97 in position的解决方法

    在编写代码时,调用python解释器中的模块时出现 UnicodeDecodeError: 'gbk' codec can't decode byte 0x97 in position 20: ill ...

最新文章

  1. django 1.2.1更新后 关于CSRF token missing or incorrect的问题
  2. Docker仓库搭建
  3. Python 中的 os 模块常见方法?
  4. opengl学习笔记(三)
  5. sencha touch 2与phonegap 2.0结合 打包web app
  6. 【原创】大叔问题定位分享(4)Kafka集群broker节点从zookeeper上消失
  7. php将word转化成html,phpword转html
  8. scada系统集成_MES与EPR进行系统集成的实际案例-系统接口、交互数据分析
  9. u盘写保护终极修复方法
  10. windows重置net use或者SMB协议
  11. 怎么调用计算机任务管理器,任务管理器怎么打开
  12. Web爬虫|入门实战之实习僧(编码反爬)
  13. 对物联网的感悟_物联网心得体会总结
  14. 安装Pytorch后torch.cuda.is_available()返回False问题解决
  15. 【C语言】qsort()函数详解
  16. dB dBm dBFs 理解
  17. 2019智能手表推荐_2020年买什么智能手表合适?
  18. Java雷电游戏要准备什么_Java 雷电游戏(未完成)
  19. 阿里巴巴java开发手册-泰山版 下载
  20. CSS 行内元素设置高度

热门文章

  1. UIColor 生成纯色图片
  2. Metasploit工具配置使用
  3. 报错已加载插件:fastestmirror, langpacksLoading mirror speeds from cached hostfileThere are no enabled repos
  4. 快手自动操作学习参考
  5. 中国口腔医疗行业发展模式与投资战略规划分析报告2022-2028年版
  6. iOS——越狱与免证书调试
  7. 2022 年最受欢迎的 19个 VS Code 主题排行榜
  8. 51nod 1597 有限背包计数问题 DP 根号分治
  9. 史上最大数据泄露:维基解密公布CIA黑客兵工厂
  10. 区块链如何解决数据安全问题?