【发布时间】:2020-07-24 08:20:18
【问题描述】:
我在 R 中创建了以下 S4 类,它的构造函数采用一个名为“A”的变量,它是一个字符串。该类有一个名为“test_method”的方法,该方法将字符串“B”作为输入并返回“A”是否等于“B”。
test_class <- setRefClass(
"test_class",
fields=list(A="character"),
methods = list(
test_method = function(B) {
if (A==B) {
return('yes')
} else {
return('no')
}
}
)
)
现在,我可以创建此类的一个实例并在其上执行“test_method”:
object <- test_class(A='hello')
object$test_method('hi')
这会返回“否”,因为字符串不相等。
现在我想保存我制作的这个对象并从 Python 执行“test_method”。我制作了一个 RDS:
saveRDS(object, 'object.rds')
现在我知道如何使用 rpy2 将这个对象读入 Python(但是我并不关心使用哪个包,因为它可以工作):
from rpy2.robjects import R
r = R()
r_object = r.readRDS("object.rds")
但是我现在如何执行“test_method”?我试过了,但它不起作用:
r_object.test_method('hi')
这会抛出:“AttributeError: 'RS4' object has no attribute 'test_method'”
【问题讨论】: