【发布时间】:2020-02-24 10:02:32
【问题描述】:
我想借助 rpy2 在 Python 中使用 ICCest(R 库 ICC 中的一个函数)。
ICCest 在 R 中的用法是ICCest(column_a, column_b, data)。
但是,没有办法通过 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 传递“未引用的 'data' 列名”?
【问题讨论】:
-
当您尝试
ICC.ICCest(a, b, df)时在a和b周围没有引号会发生什么? -
NameError:未定义名称“a”。毕竟这是 Python。
-
该错误看起来实际上仅与
'y'参数有关,并从中删除了引号。那么ICC.ICCest('a', b, df)呢? -
没有。我不认为这就是 Python 的工作方式。