2

我为我的数据框赋予了一些属性。

这只是为我节省了一些打字时间。我经常使用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 ...
4

1 回答 1

3

mutate函数会导致预期的属性丢失(即使您只将单个列强制转换为不同的类。)所以在变异操作之后设置您的属性:

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"
于 2018-01-04T18:01:13.763 回答