问题描述
在我的项目中,我想从我的 R 数据框中提取除数字之外的所有列,作为 问题,我使用了相同的方法,只是将一个非门放入 is.numeric()
R 函数中,但它不工作
这给出了所有数字数据,
x<-iris %>% dplyr::select(where(is.numeric))
但这并没有按预期工作,
x<-iris %>% dplyr::select(where(!is.numeric))
注意:最后,输出数据框应该只包含鸢尾花数据集中的物种列
解决方法
来自
purrr
的 tidyverse
包通过 purrr::keep
和 purrr::discard
library(purrr)
x <- iris %>% keep(is.numeric)
通过这段代码,您在 keep
函数中设置了逻辑测试,只有通过测试的列才会保留。
要反转该操作并实现您的愿望,您也可以使用 discard
中的 purrr
;
x <- iris %>% discard(is.numeric)
您可以将 discard
视为 keep
,但使用 !is.numeric
或者通过dplyr
x <- iris %>% select_if(~!is.numeric(.))