我正在尝试为每列创建一个列类型和唯一变量的数据框。
我能够使用 获得所需数据帧格式的列类型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)
Run Code Online (Sandbox Code Playgroud)
当我尝试用同样的方法在map(df, unique)作为上map(df, class)我得到以下错误:Error: Argument 2 must be length 3, not 2预计,但我不知道怎么去解决它。
这两列中唯一值的数量不同。您需要将它们缩减为单个元素。
df2 <- map(df, ~str_c(unique(.x),collapse = ",")) %>%
bind_rows() %>%
gather(key = col_name, value = col_unique)
Run Code Online (Sandbox Code Playgroud)
> df2
# A tibble: 2 x 2
col_name col_class
<chr> <chr>
1 v1 1,2,3
2 v2 a,b
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1588 次 |
| 最近记录: |