如何删除RStudio中dataframe的非数值列?现有代码运行报错求解
问题解决说明
错误原因
你的代码存在两处核心逻辑错误:
mutate_if()是dplyr中用于操作数据框列的函数,要求第一个输入参数为数据框对象,你直接传入了列名转换后的数值向量,因此触发了tbl_vars相关的方法适配错误- 你的需求是删除数据框的非数值列,但现有代码尝试将列名转为数值后重新赋值给列名属性,和需求完全不匹配
正确实现方法
方法1:dplyr包简洁实现(推荐)
如果已经安装加载dplyr包,直接使用select_if筛选数值列即可:
library(dplyr) train <- select_if(train, is.numeric)
如果使用dplyr 1.0.0及以上版本,也可以使用更规范的where语法:
train <- train %>% select(where(is.numeric))
方法2:Base R原生实现(无需加载第三方包)
直接通过基础函数筛选数值列索引:
train <- train[, sapply(train, is.numeric)]
处理完成后可运行str(train)查看列类型,确认非数值列已被移除。
内容的提问来源于stack exchange,提问作者Akhilesh Kumar Ojha
相关产品推荐
相关产品推荐

