【发布时间】:2020-05-13 23:38:46
【问题描述】:
我想实现一个函数:=(lhs, rhs),它接受lhs 的任何 表达式,而rhs 必须属于X 类。
为了避免与其他包(例如data.table)发生冲突,应通过setGeneric(":=") 设置一个通用函数:=,该函数基于第二个参数的类进行调度。
然而,
setMethod(
":="
, c("ANY", "X")
, function(lhs, rhs) NULL
)
假设第一个参数是一个实际的对象,即bla := x 结果
:=(bla, x) 中的错误:找不到对象“bla”
只要bla 未绑定。
当第二个参数属于X 类时,有没有办法定义这样一个函数而不影响其他同名实现的行为?
备注: := 不能定义为适当的 S3 泛型,因为它是在 lhs 而不是 rhs 上调度的。
【问题讨论】:
标签: r operator-overloading s4