R Markdown中‘Cant subset columns’错误求助:数据过滤代码报错
R数据框行筛选报错解决方案
问题代码及报错
运行以下行筛选代码时出现错误:
data_1_year_v2 <- data_1_year_v2[!(data_1_year_v2$ride_length <= 0)]
报错信息:
Error in data_1_year_v2[!(data_1_year_v2$ride_length <= 0)]: ! Cannot subset columns with !(data_1_year_v2$ride_length <= 0). ✖ Logical subscript !(data_1_year_v2$ride_length <= 0) must be size 1 or 12, not 5719877. Backtrace: 1. data_1_year_v2[!(data_1_year_v2$ride_length <= 0)] 7. vctrs (local) `<fn>`() 8. vctrs:::stop_indicator_size(...)
报错原因
R数据框的[索引语法中,x[i]默认是筛选列,而你传入的逻辑向量长度(5719877)和数据框的列数(12)不匹配,因此触发维度错误。你实际需要的是筛选行,必须明确指定维度。
解决方案
方法1:补充行筛选的维度标记
在索引后添加逗号,明确表示筛选行、保留所有列:
data_1_year_v2 <- data_1_year_v2[!(data_1_year_v2$ride_length <= 0), ]
方法2:使用dplyr包的filter函数(更直观)
如果习惯tidyverse风格,可以用filter函数直接筛选行,语法更清晰:
library(dplyr) data_1_year_v2 <- data_1_year_v2 %>% filter(ride_length > 0)
内容的提问来源于stack exchange,提问作者Enrique H
相关产品推荐
相关产品推荐

