You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何删除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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 18:09:01