R语言自定义S4类重定义‘+’运算符报错问题咨询
解决S4类自定义
+运算符的报错问题 错误原因
+是R的内置隐式泛型函数,不需要通过setGeneric()重新声明,强行调用会触发报错。- 原代码中
setMethod()的参数格式错误:方法签名需要以长度为2的向量形式指定两个操作数的类,而非分开传递两个字符串参数。
修正后的代码
# 定义string类 setClass("string", representation(data = "character")) # 直接为+运算符定义S4方法,无需setGeneric setMethod("+", signature = c("string", "string"), function(x, y) { new("string", data = paste0(x@data, y@data)) })
测试验证
# 创建两个string对象 s1 <- new("string", data = "Hello ") s2 <- new("string", data = "World!") # 使用+拼接 s1 + s2 # 输出结果:An object of class "string" # Slot "data": # [1] "Hello World!"
内容的提问来源于stack exchange,提问作者Nithi
相关产品推荐
相关产品推荐

