【发布时间】:2019-07-24 22:09:28
【问题描述】:
我正在尝试为每列创建列类型和唯一变量的数据框。
我能够使用map(df, class) %>% bind_rows() %>% gather(key = col_name, value = col_class) 获得所需数据框格式的列类型,但无法将唯一变量变成数据框而不是列表。
下面是一个小数据框和代码,用于获取列表中的唯一变量,但不是数据框。理想情况下,我可以在一个(地图)函数中做到这一点,但如果我必须加入它们,那也没什么大不了的。
df <- data.frame(v1 = c(1,2,3,2), v2 = c("a","a","b","b"))
library(tidyverse)
map(df, class) %>% bind_rows() %>% gather(key = col_name, value = col_class)
map(df, unique)
当我尝试在 map(df, unique) 上使用与 map(df, class) 上相同的方法时,我收到以下错误:Error: Argument 2 must be length 3, not 2 这是预期的,但我不知道如何解决它。
【问题讨论】:
-
你想要的输出是什么?
-
另外,代替
bind_rows %>% spread(...)这样做map(df, class) %>% enframe() %>% unnest() -
@M-M 我没听说过
enframe()和unnest()。我正在努力理解文档,但是与bind_rows() %>% gather()相比有什么好处?