R中select函数报错:无法找到适用于tbl_df类型的继承方法
解决R中select函数与tbl_df类型不兼容的报错问题
问题根源
你加载的raster包中包含了一个和dplyr同名的select()函数,两者发生了命名冲突。当你调用select()时,R默认调用了raster包的版本——而这个函数只处理栅格数据,不支持tbl_df(readxl返回的数据格式),所以触发报错。
三种可行解决方案
- 指定dplyr命名空间调用(推荐):直接在select前加上
dplyr::,明确告诉R使用dplyr的select函数:
library(readxl) library(here) library(dplyr) library(raster) data <- read_xlsx(here("Data", "Diss_Survey_Responses.xlsx")) %>% dplyr::select(3:38)
- 调整包加载顺序:把
dplyr放在raster之后加载,让dplyr的select覆盖raster的版本。但这种方法可能导致raster包的部分功能受影响,谨慎使用:
library(readxl) library(here) library(raster) library(dplyr) # 放在raster之后加载 data <- read_xlsx(here("Data", "Diss_Survey_Responses.xlsx")) %>% select(3:38)
- 卸载raster包(若暂时不用):如果当前工作不需要raster包,直接卸载它:
detach("package:raster", unload = TRUE) # 之后正常调用select即可 data <- read_xlsx(here("Data", "Diss_Survey_Responses.xlsx")) %>% select(3:38)
内容的提问来源于stack exchange,提问作者ano273
相关产品推荐
相关产品推荐

