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

R语言select_函数报错:无适用于整数/数值类对象的方法如何解决?

修复你的dplyr代码问题

你的报错核心原因有两个,我一步步给你拆解:

1. 缺少管道符连接操作

你在filter(!is.na(race))之后没有用%>%把处理后的数据集传递给select,导致select没有接收数据框,反而直接处理race$African_American这个单独的数值向量——而select是专门用来操作数据框的函数,自然会报错说“没有适用于integer/numeric对象的select_方法”。

2. select中不需要用race$前缀

当你用管道符%>%传递数据框时,后续的dplyr函数已经默认操作这个传递过来的数据框,直接写列名就行,完全不需要再加数据集前缀。


修复后的基础代码

如果你只是想提取指定列并去掉race列为NA的行,代码应该是这样:

library(dplyr)

race_mut <- race %>% 
  filter(!is.na(race)) %>%  # 用%>%连接到下一个操作
  select(African_American, White, Hispanic, Asian, Other)  # 直接写目标列名

race_mut

补充:如果你的目标是统计每个种族的计数

从你描述的“提取这些列的计数来构建新数据集”来看,可能你想要的是每个种族的总人数(比如这些列是0/1的指示变量,1代表属于该种族)。这种情况下可以用summarize来计算每列的总和:

race_counts <- race %>%
  filter(!is.na(race)) %>%
  summarize(
    African_American = sum(African_American, na.rm = TRUE),
    White = sum(White, na.rm = TRUE),
    Hispanic = sum(Hispanic, na.rm = TRUE),
    Asian = sum(Asian, na.rm = TRUE),
    Other = sum(Other, na.rm = TRUE)
  )

# 或者转成长格式,更便于后续可视化或分析
race_long_counts <- race %>%
  filter(!is.na(race)) %>%
  select(African_American, White, Hispanic, Asian, Other) %>%
  tidyr::pivot_longer(everything(), names_to = "Race", values_to = "IsMember") %>%
  group_by(Race) %>%
  summarize(Total_Count = sum(IsMember, na.rm = TRUE))

内容的提问来源于stack exchange,提问作者kvritza

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:30:46