【发布时间】:2019-10-26 12:51:46
【问题描述】:
我正在为 purrr 包而苦苦挣扎。
我正在尝试将函数 is.factor 应用于数据框,然后将 fct_count 应用于那些是因子的列。
我尝试了modify_if 和summarise_if 的一些变体。我想我在调用前一个对象时错误地使用了点 (.)。
(关于 purrr 的指南,如果您有链接,点将非常有用)。
例如,
df <- data.frame(f1 = c("men", "woman", "men", "men"),
f2 = c("high", "low", "low", "low"),
n1 = c(1, 3, 3, 6))
然后
map(df, is.factor)
如果我使用
map_if(df, is.factor, forcats::fct_count)
我得到了每个变量的结果,而不仅仅是因子。
我认为这是一个很简单的问题,稍微了解点(.)就可以解决。
提前致谢 :)
【问题讨论】:
-
您的预期输出是什么?我怀疑这是因为
stringsAsFactors是TRUE。否则,结果对我来说似乎很清楚。 -
试试
df %>% mutate_if(is.factor, list(~list( fct_count(.)))) %>% unnest -
感谢您的帮助。 Akrun,你介意参考一个网站,在那里我可以了解更多关于 purrr 包的信息(如何使用点 ~list、unnest 等。在此先感谢 :)
标签: r dictionary iteration purrr