dplyr谓词是否删除自定义类和属性?
我正在开发一个依赖于向数据帧添加类和属性的包,并且希望能够使用dplyr谓词是否删除自定义类和属性?,r,dplyr,R,Dplyr,我正在开发一个依赖于向数据帧添加类和属性的包,并且希望能够使用dplyr动词 唯一的问题是它们似乎去掉了我添加到数据帧中的类和属性 示例 class(mtcars) <- c("new_class", class(mtcars)) attr(mtcars, "foo") <- "bar" 但是当我使用过滤器时,它似乎丢失了类和属性 > mtcars %>% filter(cyl == 8) %>% str 'data.frame': 14 obs. of 1
dplyr
动词
唯一的问题是它们似乎去掉了我添加到数据帧中的类和属性
示例
class(mtcars) <- c("new_class", class(mtcars))
attr(mtcars, "foo") <- "bar"
但是当我使用过滤器时,它似乎丢失了类和属性
> mtcars %>% filter(cyl == 8) %>% str
'data.frame': 14 obs. of 11 variables:
$ mpg : num 18.7 14.3 16.4 17.3 15.2 10.4 10.4 14.7 15.5 15.2 ...
$ cyl : num 8 8 8 8 8 8 8 8 8 8 ...
$ disp: num 360 360 276 276 276 ...
$ hp : num 175 245 180 180 180 205 215 230 150 150 ...
$ drat: num 3.15 3.21 3.07 3.07 3.07 2.93 3 3.23 2.76 3.15 ...
$ wt : num 3.44 3.57 4.07 3.73 3.78 ...
$ qsec: num 17 15.8 17.4 17.6 18 ...
$ vs : num 0 0 0 0 0 0 0 0 0 0 ...
$ am : num 0 0 0 0 0 0 0 0 0 0 ...
$ gear: num 3 3 3 3 3 3 3 3 3 3 ...
$ carb: num 2 4 3 3 3 4 4 4 2 2 ...
这种行为是意料之中的吗
如何解决此问题?filter
调用filter
,它使用数据帧的方法(因为没有针对new\u类filter\uu.data.frame
的筛选方法,所以使用tbl\u df
调用筛选方法,并使用as.data.frame
返回data.frame
)
dplyr:::filter_.data.frame
## function (.data, ..., .dots)
## {
## dots <- lazyeval::all_dots(.dots, ..., all_named = TRUE)
## as.data.frame(filter_(tbl_df(.data), .dots = dots))
## }
## <environment: namespace:dplyr>
筛选似乎失去了属性foo
mtcars %>% tbl_df %>% filter(cyl == 8) %>% str
似乎相关。感谢Henrik-这帮了我不少忙。我能够制作一个过滤器
泛型,为我的类定义方法,并定义一个默认方法,它只指向dplyr::filter
。类似于以下要点:
mtcars %>% tbl_df %>% str
mtcars %>% tbl_df %>% filter(cyl == 8) %>% str