到现在为止,当我只想将函数应用于数字列时,我使用了
library(tidyverse)
map(diamonds[map_lgl(diamonds, is.numeric)], range, na.rm = TRUE)
现在我想知道这是否是
map_if()
不太笨重的情况。我试过的是:map_if(diamonds, is.numeric, range, na.rm = TRUE)
但是由于某种原因,现在为所有列(不仅是数字列)计算了
range
。我做错了什么还是误解了
map_if()
的目的?如果是后者,我将在什么情况下使用map_if()
? 最佳答案
我们可以使用summarise_if
diamonds %>%
summarise_if(is.numeric, funs(list(range(.)))) %>%
unnest
# A tibble: 2 x 7
# carat depth table price x y z
# <dbl> <dbl> <dbl> <int> <dbl> <dbl> <dbl>
# 1 0.200 43.0 43.0 326 0 0 0
#2 5.01 79.0 95.0 18823 10.7 58.9 31.8
map_if
将应用于numeric
列上的函数,并取消其他列的接触,以便我们从这些列中获取原始值。 summarise_if
将根据条件对数据集进行子集化并将功能应用于这些列关于r - purrr::map_if:仅将函数应用于特定列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49190307/