Python 将不带引号的列名馈送到R函数[rpy2]

Python 将不带引号的列名馈送到R函数[rpy2],python,r,rpy2,Python,R,Rpy2,我想在Python中借助rpy2使用ICCest(R库ICC中的一个函数) 在R中使用的是ICCest(列a、列b、数据)。 但是,没有办法通过rpy2传递一个不带引号的列名 如果我执行下面的代码 import numpy as np from rpy2.robjects.vectors import DataFrame from rpy2.robjects.packages import importr df = DataFrame.from_object({ 'a': np.aran

我想在Python中借助rpy2使用
ICCest
(R库
ICC
中的一个函数)

在R中使用的是ICCest(列a、列b、数据)。 但是,没有办法通过rpy2传递一个不带引号的列名

如果我执行下面的代码

import numpy as np
from rpy2.robjects.vectors import DataFrame
from rpy2.robjects.packages import importr
df = DataFrame.from_object({
    'a': np.arange(20).repeat(5),
    'b': np.arange(100),
})
ICC = importr("ICC")
ICC.ICCest('a', 'b', df)
它将出错并发出如下警告:

WARNING:rpy2.rinterface_lib.callbacks:R[write to console]: Error in eval(as.name(y), data, parent.frame()) : object 'b' not found
Calls: <Anonymous> -> eval -> eval

WARNING:rpy2.rinterface_lib.callbacks:R[write to console]: In addition: 
WARNING:rpy2.rinterface_lib.callbacks:R[write to console]: Warning message:

WARNING:rpy2.rinterface_lib.callbacks:R[write to console]: In (function (x, y, data = NULL, alpha = 0.05, CI.type = c("THD",  :
WARNING:rpy2.rinterface_lib.callbacks:R[write to console]: 

WARNING:rpy2.rinterface_lib.callbacks:R[write to console]:  passing a character string to 'y' is deprecated since ICC vesion 2.3.0 and will not be supported in future versions. The argument to 'y' should either be an unquoted column name of 'data' or an object
警告:rpy2.rinterface_lib.callbacks:R[写入控制台]:eval中出错(as.name(y),data,parent.frame()):找不到对象“b”
调用:->eval->eval
警告:rpy2.rinterface_lib.callbacks:R[写入控制台]:此外:
警告:rpy2.rinterface_lib.callbacks:R[写入控制台]:警告消息:
警告:rpy2.rinterface_lib.callbacks:R[写入控制台]:In(函数(x,y,data=NULL,alpha=0.05,CI.type=c(“THD”):
警告:rpy2.rinterface_lib.callbacks:R[写入控制台]:
警告:rpy2.rinterface_lib.callbacks:R[写入控制台]:自从ICC vesion 2.3.0以来,不推荐将字符串传递给“y”,并且在将来的版本中不受支持。“y”的参数应为“data”的未加引号的列名或对象
注意最后一行警告。 我如何用rpy2传递“未加引号的‘data’列名”

from rpy2.robjects.vectors import DataFrame, FloatVector
df = DataFrame({
    'a': FloatVector(np.arange(20).repeat(5)),
    'b': FloatVector(np.arange(100)),
})
一旦我将numpy数组转换为
FloatVector
,代码就可以工作了

此外,最好在此处使用
as.name
as.symbol

ICC.ICCest(base.as_name('a'), base.as_name('b'), df)

当您尝试
ICC.ICCest(a,b,df)
而在
a
b
周围没有引号时会发生什么?NameError:名称“a”没有定义。毕竟这是Python。错误看起来实际上只是关于
'y'
参数并从中删除引号。那么
ICC.ICCest('a',b,df)呢
?不,我认为Python不是这样工作的。