作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
直到现在,当我只想将一个函数应用于数字列时,我使用
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/
请帮我 1) 为什么 map_if 在列表中不起作用 2)有没有办法让它工作 3)如果不是,有什么选择 提前致谢。 library(dplyr) library(purrr) cyl <- split
直到现在,当我只想将一个函数应用于数字列时,我使用 library(tidyverse) map(diamonds[map_lgl(diamonds, is.numeric)], range, na.
我是一名优秀的程序员,十分优秀!