S4从data.frame继承的对象:删除dplyr::filter中的警告
我有一个从data.frame继承的S4类:S4从data.frame继承的对象:删除dplyr::filter中的警告,r,inheritance,dplyr,s4,R,Inheritance,Dplyr,S4,我有一个从data.frame继承的S4类: > setClass("Foo", contains="data.frame") > x <- new("Foo", data.frame(a=1:2)) 有什么好办法可以摆脱这个警告吗?我可以创建一个新的 通用的过滤器,并将dplyr版本包装在该文件中 像 但是继承的意义不在于避免这些额外的工作吗 此警告是否与dplyr不知道S4对象有关 编辑:dplyr 0.4.3和0.5.0的相同行为使用TIBLE包,其中从data.fra
> setClass("Foo", contains="data.frame")
> x <- new("Foo", data.frame(a=1:2))
有什么好办法可以摆脱这个警告吗?我可以创建一个新的
通用的过滤器
,并将dplyr版本包装在该文件中
像
但是继承的意义不在于避免这些额外的工作吗
此警告是否与dplyr不知道S4对象有关
编辑:dplyr 0.4.3和0.5.0的相同行为使用TIBLE包,其中从data.frame到TIBLE的转换将为参数指定三个类<在此之前调用了code>unclass(),但unclass不会使对象失去作为S4对象的状态,因此会出现上述警告
简而言之,这是dplyr中的一个问题。我想你得为仿制药做包装。谢谢。我怀疑dplyr(和data.table,可能还有更多)只是忽略了被S4的对象。应该在github开始。是的,必须在那里进行。或者如果运气好的话,其他人会想出一个简单的解决办法。我才刚刚开始使用S4,仍然不确定什么是可能的。
> x %>% dplyr::filter(a > 1)
a
1 2
Warning message:
In class(x) <- c("tbl_df", "tbl", "data.frame") :
Setting class(x) to multiple strings ("tbl_df", "tbl", ...); result
will no longer be an S4 object
dplyr::filter(as.data.frame(unclass(x)), ...)