【问题标题】:rpy2 : Korean characters are not working on rpy2rpy2 : 韩语字符不适用于 rpy2
【发布时间】:2015-03-30 15:14:08
【问题描述】:

python 代码:

import rpy2.robjects as robjects

rCommand='''gender <- c("남자", "남자", "남자", "여자", "여자", "여자", "여자", "여자")
  age    <- c(23, 25, 27, 29, 31, 33, 35, 37)
  outdf <- data.frame(gender, age)
'''
robjects.r(rCommand)
resultDf_r=robjects.globalenv["outdf"]

print type(resultDf_r)

韩文字符导致python.exe被杀死。

在 R 命令终端中,上面的“rCommand”运行良好。

我找不到任何解决方案。

任何帮助将不胜感激。

我的环境:窗口 7 x64、python 2.7.8 x64、rpy2 2.5.4、R 3.1.2

【问题讨论】:

    标签: python r rpy2


    【解决方案1】:

    在撰写本文时,很遗憾,rpy2 还没有官方支持 Windows。您提供的代码 sn-p 在 Linux 上运行良好。

    您的选择可能是:

    • 在 Linux VM(或容器 - MS 已宣布支持 Docker)中运行您的代码

    • 提交 rpy2 的补丁

    • 在 bitbucket 页面上为rpy2 提交错误报告,希望这可以转化为某人的补丁

    编辑: cmets 建议帮助 Python 2.7 进行编码可能会有所帮助(不保证 - 一切都在 Linux 上运行,因此这可能是特定于 Windows 的)。可以将字符串显式指定为 unicode 格式(注意 ''' 之前的前缀 u):

    rCommand=u'''
        gender <- c("남자", "남자", "남자", "여자", "여자", "여자", "여자", "여자")
        age    <- c(23, 25, 27, 29, 31, 33, 35, 37)
        outdf <- data.frame(gender, age)
    '''
    robjects.r(rCommand)
    

    【讨论】:

    • 现在我找到了绕过。 1. R 命令保存到 script.R ,2. 我执行 R 命令 => source("c:\\script.R") 它适用于韩语字符。
    • source("c:\\script.R") ==> source("c:\\script.R", , encoding='UTF-8-BOM' )
    • 我现在才看到您使用的是 Python 2.7,而不是 3.4。在 Python 中工作时,您几乎肯定需要指定编码。一般来说,切换到 Python 3.4(默认为 unicode)可能是一个好主意。
    • 我先写了编码选项,比如 "#-- coding: UTF-8 --'" 。我不擅长用英语写作。感谢您的认真回复。 (来自韩国首尔)
    • 我的意思是包含 R 代码的字符串的编码。我已编辑答案以添加示例。
    猜你喜欢
    • 2016-04-27
    • 2014-11-06
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-11
    • 2013-06-11
    • 2019-01-31
    相关资源
    最近更新 更多