首页 > 解决方案 > 提取R数据框中除数字外的所有列

问题描述

在我的项目中,我想从我的 R 数据框中提取除数字之外的所有列,因为这个问题我使用了相同的方法,只是在 R 函数中放置了一个非门,is.numeric()但它不起作用

这给出了所有的数值数据,

x<-iris %>% dplyr::select(where(is.numeric))

但这并没有按预期工作,

x<-iris %>% dplyr::select(where(!is.numeric))

注意:最后输出数据框应该只包含 iris 数据集中的物种列

标签: rdataframedplyrisnumeric

解决方案


purrrpackage fromtidyverse完全符合您的要求,purrr::keep并且purrr::discard

library(purrr)

x <- iris %>% keep(is.numeric)

通过这些代码,您在keep函数中设置了一个逻辑测试,只有通过测试的列才会保留。

要反转该操作并实现您的愿望,您也可以使用discardfrom purrr

x <- iris %>% discard(is.numeric)

你可以discard认为keep但是!is.numeric

或者通过dplyr

x <- iris %>% select_if(~!is.numeric(.))

推荐阅读