使用dplyr :: mutate后,为什么给定的属性会消失?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用dplyr :: mutate后,为什么给定的属性会消失?相关的知识,希望对你有一定的参考价值。
我给了我的数据框一些属性。
这只是为我节省了一些打字。我使用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 ...
答案
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"
以上是关于使用dplyr :: mutate后,为什么给定的属性会消失?的主要内容,如果未能解决你的问题,请参考以下文章
你能让 dplyr::mutate 和 dplyr::lag 默认 = 自己的输入值吗?
R语言dplyr包使用mutate函数生成新的数据列(不改变原数据列)实战
使用 dplyr::mutate 对数据帧进行 Fisher 的测试统计
R语言dplyr包使用dplyr函数使用group_by函数summarise函数和mutate函数计算分组占比实战
在 R 中:将列名作为参数传递,并在 dplyr::mutate() 和 lazyeval::interp() 的函数中使用它