R代码审阅:使用dplyr::select进行数据列子集提取报错排查
问题错误原因说明
你预先定义的response、predictors对象没有问题,不需要修改,运行失败是以下2处代码逻辑错误导致的:
- 第一处:管道传递逻辑错误
%>%管道符的作用是将左侧对象作为第一个参数传入右侧函数,你写的myData_subset %>% select(response,predictors)是尝试从还未创建的目标对象myData_subset中提取列,完全颠倒了数据源和输出对象的关系,正确逻辑是从原始数据框myData提取列后,赋值给新对象myData_subset。 - 第二处:dplyr列名引用规则错误
dplyr的select()函数默认优先在传入的数据框的列名中搜索参数值,你直接传入全局环境定义的response、predictors时,函数会尝试在myData中找名叫response、predictors的列,而不是读取这两个对象存储的列名字符串,需要用all_of()包裹外部列名变量,显式告知函数参数对应外部存储的列名向量。
正确可运行代码
# 加载dplyr包(如果已经加载可省略) library(dplyr) # 你原有对象定义完全正确,无需调整 response = 'price' predictors = c("carat","cut","clarity","color","depth") # 正确提取子集的代码 myData_subset <- myData %>% select(all_of(response), all_of(predictors))
内容的提问来源于stack exchange,提问作者nodes4codes
相关产品推荐
相关产品推荐

