使用rpy2运行R函数时出错

什洛米兰

我试图用rpy2要逃避的multi.split功能questionr包。

这是我的代码

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

questionr = importr(str('questionr'))

data = ["red/blue", "green", "red/green", "blue/red", "red/blue", "green", "red/green", "blue/red", "red/blue", "green", "red/green", "blue/red", "red/blue", "green", "red/green", "blue/red", "red/blue", "green"]
data_vector = robjects.StrVector(data)
multi_split = questionr.multi_split
data_table = multi_split(data_vector, split_char='/')

在最后一行之后,出现以下错误:

RRuntimeError: Error in `colnames<-`(`*tmp*`, value = c("c(\"red/blue\",_\"green\",_\"red/green\",_\"blue/red\",_\"red/blue\",_\"green\",_.blue",  : 
 'names' attribute [4] must be the same length as the vector [3]

我认为这与我要发送的向量的大小有关,因为如果我删除了最后一个项目

data = ["red/blue", "green", "red/green", "blue/red", "red/blue", "green", "red/green", "blue/red", "red/blue", "green", "red/green", "blue/red", "red/blue", "green", "red/green", "blue/red", "red/blue"]

然后运行

data_vector = robjects.StrVector(data)
multi_split = questionr.multi_split
data_table = multi_split(data_vector, split_char='/')

我没有收到任何错误消息。同样,如果我更改了“ split_char”变量,例如:

data_table = multi_split(data_vector, split_char='.')

无论我发送的数组大小如何,我都不会收到错误消息。

我试图直接在R中运行匹配的代码(使用R-Studio),但运行没有问题。关于如何解决此问题的任何想法?

lgautier

这似乎是因为该函数multi_splitmulti.split在R包中)试图使用与第一个参数("data_vector"此处)相关联的表达式的字符串表示形式

R函数的签名是:

multi.split(var, split.char = "/", mnames = NULL)

他的文档mnames是:

产生的变种的名称。如果为NULL,则根据原始变量名称和答案计算名称。

在调用中multi_split(data_vector, split_char='/'),嵌入式R无法看到变量名,因为这是Python调用,并且data_vector是匿名变量(仅内容,无变量名)。

我虽然可以指定mnames,但是您检查了一下,但不起作用(请参阅下面的评论)。这就是代码似乎要说的:vname <- deparse(substitute(var))无论是否指定了mnames,都会对行进行评估:https : //github.com/juba/questionr/blob/9cf09f3ffcd6c8df24182380f12d52b061c221ef/R/table.multi.R#L161

另一种方法是计算R表达式的用法。一个较旧的帖子应该为此提供必要的信息:哪个对象从rpy2传递给R?

第三种可能性是创造性地将Python字符串作为R代码进行混合:

data = ["red/blue", "green", "red/green", "blue/red", "red/blue", "green", "red/green", "blue/red", "red/blue", "green", "red/green", "blue/red", "red/blue", "green", "red/green", "blue/red", "red/blue", "green"]
data_vector = robjects.StrVector(data)
# binding the R vector to a symbol in R's "GlobalEnv"
robjects.globalenv['mydata'] = data_vector
# the call is now in a Python string that is evaluated as R code
data_table = robjects.r("multi.split(data_vector, split_char='/')")

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Jupyter Notebook Rpy2中的R单元中使用熊猫数据框时出错

来自分类Dev

使用 rpy2 从 Python 调用 R 函数

来自分类Dev

使用easy_install在Python中安装rpy2模块时出错

来自分类Dev

Travis CI:安装rpy2时出错

来自分类Dev

在Ubuntu中安装Rpy2时出错

来自分类Dev

使用rpy2加载R软件包时R内核崩溃

来自分类Dev

Python rpy2加载edgeR R-package时出错,但已安装并在R中工作

来自分类Dev

如何通过Rpy2(v3)在Python中使用R中的`hclust`函数?

来自分类Dev

如何在Python代码中使用rpy2将R函数作为参数传递

来自分类Dev

RPy2导入R源函数会产生错误

来自分类Dev

在rpy2中绘制R函数曲线

来自分类Dev

如何使用rpy2运行auto.arima

来自分类Dev

使用rpy2将.R文件采购到python时出现问题

来自分类Dev

使用rpy2从python调用R脚本

来自分类Dev

如何使用rpy2访问R包的内部功能?

来自分类Dev

使用rpy2将Python变量传递给R

来自分类Dev

使用rpy2从python动态调用R库

来自分类Dev

将R示例函数与rpy2一起使用时发生意外行为吗?

来自分类Dev

用rpy2修改r对象

来自分类Dev

通过rpy2使用Rblpapi

来自分类Dev

rpy2 zoo 未使用的参数

来自分类Dev

只需从 rpy2 运行一个 R 命令(不是源文件)

来自分类Dev

rpy2:导入不是标准R库的R库时没有输出

来自分类Dev

rpy2:如何将向量从 Python 回调函数返回到 R?

来自分类Dev

在virtualenv下加载RPy2时,Django无法找到R

来自分类Dev

如何在rpy2 rlf.tapply函数中使用na_rm

来自分类Dev

由于-Werror = declaration-after-statement而在python3.4上编译rpy2时出错

来自分类Dev

在Python和Rpy2中使用R:如何ggplot2?

来自分类Dev

从命令提示符运行rpy2

Related 相关文章

热门标签

归档