我正在尝试使用rpy2运行多重分割来自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\u char”变量,例如:
data_table = multi_split(data_vector, split_char='.')
无论发送的数组大小如何,我都不会收到错误消息。你知道吗
我试过直接在R中运行匹配的代码(使用R-Studio),它运行起来没有问题。 有什么办法解决这个问题吗?你知道吗
这似乎是因为函数
multi_split
(multi.split
在R包中)试图使用与第一个参数相关联的表达式的字符串表示(这里是"data_vector"
)。你知道吗R函数的签名是:
而
mnames
的he文档是:在调用
multi_split(data_vector, split_char='/')
中,嵌入的R无法看到变量名,因为这是一个Python调用,data_vector
是一个匿名变量(只有内容,没有变量名)。你知道吗我认为您可以指定
mnames
,但是您选中了,这不起作用(参见下面的注释)。代码似乎是这么说的:无论是否指定mnames,都会对行vname <- deparse(substitute(var))
求值:https://github.com/juba/questionr/blob/9cf09f3ffcd6c8df24182380f12d52b061c221ef/R/table.multi.R#L161另一种方法是计算R表达式的用法。较旧的post应该为此提供必要的位:What object to pass to R from rpy2?
第三种可能性是创造性地将Python-strings-as-R-code混合使用:
相关问题 更多 >
编程相关推荐