如何在选择的列上使用map_df()?

时间:2018-04-20 10:35:12

标签: r dplyr purrr

此代码采用数据帧并将prettyNum-Function应用于每个列:

test <- mtcars %>%  map_df(., ~prettyNum(.,big.mark = ".", decimal.mark = ","))

不,我想选择赋予函数的列,但我无法理解代码必须如何。这是我最好的猜测:

test <- mtcars %>%  map_df(., ~mutate_at(.vars = vars(drat,wt), .funs = prettyNum(.,big.mark = ".", decimal.mark = ",")))

如何让第二个代码正常工作?

1 个答案:

答案 0 :(得分:0)

无需使用purrr::map_df执行此任务:

dplyr::mutate_all(mtcars, prettyNum, big.mark = ".", decimal.mark = ",")

dplyr::mutate_at(mtcars, .vars = vars(drat, wt), prettyNum, big.mark = ".", decimal.mark = ",")

以上操作无效,因为purrr适用于列表。数据帧是大小相等的矢量列表。使用purrr::map_df将您的数据框分开并将向量传递给dplyr::mutate_at,但是需要数据帧。这也是它在第一个例子中起作用的原因:prettyNum需要你提供的向量。