使用dplyr :: mutate后,为什么给定的属性会消失?

时间:2018-01-04 16:27:23

标签: r dataframe attributes dplyr tibble

我已经为我的数据框提供了一些属性。

这只是节省了一些打字。我使用dplyr包,尤其是mutate命令工作了很多。

但是在我的数据框上使用mutate之后,我给数据框的属性就消失了。

有谁知道为什么R或dplyr正在这样做?

这是一个小例子:

df <- data.frame(n = seq(1,1000),
       abc = rep(1,1000))
library(dplyr); library(data.table)
df <- df %>% setattr(., "my_attribute", "this thing is 1000 entries long") %>% 
                mutate_at(.vars = "abc", as.character)

...如果我列出我的属性,R就会给我:

> str(attributes(df))
List of 3
$ class    : chr "data.frame"
$ names    : chr [1:2] "n" "abc"
$ row.names: int [1:1000] 1 2 3 4 5 6 7 8 9 10 ...

1 个答案:

答案 0 :(得分:2)

mutate函数导致预期的属性丢失(即使您只将一个列强制转换为另一个类。)因此,在mutate-operation之后设置属性:

df <- df %>% mutate_at(.vars = "abc", as.character) %>% 
                  setattr(., "my_attribute", "this thing is 1000 entries long")
#> names(attributes(df))
#[1] "class"        "names"        "row.names"    "my_attribute"