R语言airDF列索引写法区别及“No columns were selected”报错解析
R代码报错原因及两段代码差异分析
报错原因定位
报错是因为第一段代码的数据框索引语法错误:
R中数据框[行筛选条件, 列筛选条件]的第二个参数,仅支持传入列名字符串、列位置数值、列匹配逻辑向量三种合法值,用来定位要提取的列。
但第一段代码中:
airDF[is_vacation, airDF$ArrDelay]的第二个参数是airDF$ArrDelay,返回的是ArrDelay列的所有观测值(数值向量),不属于合法的列索引格式airDF[is_vacation, airDF$FromTo]的第二个参数是airDF$FromTo,返回的是FromTo列的所有观测值(字符/因子向量),同样不属于合法的列索引格式
这些观测值的数值远大于数据框的总列数,匹配不到任何存在的列,所以直接抛出未选中任何列的错误。
报错原文:
Error in[.data.frame(airDF, is_vacation, airDF$FromTo) : no columns were selected.
两段代码核心差异
- 索引逻辑不同:第一段错误传入列观测值作为列索引,完全不符合R的data.frame索引规则;第二段传入
'ArrDelay'、'FromTo'列名字符串,是合法的列索引写法,可以正确筛选出is_vacation为TRUE的行对应的指定列数据。 - 运行效果不同:第一段直接触发语法报错终止运行;第二段可以正常执行,输出假期期间不同出发到达路线的平均到达延误时长。
内容的提问来源于stack exchange,提问作者SunnyDay_9
相关产品推荐
相关产品推荐

