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

R语言:循环筛选AirBnB高价房源数据仅添加单行问题求助

问题分析与解决方案

嗨,我一眼就发现你的代码里的问题啦!你现在每次找到符合条件的行时,都是直接用新行覆盖了整个highCost数据框,而不是把新行追加进去。所以哪怕循环跑了所有行,最后也只会保留最后一个符合条件的行(也就是第9273行)。

方案1:修复循环写法(满足你的循环需求,但不推荐大规模数据使用)

如果你坚持要用循环实现,需要把新行和已有的highCost数据框合并,而不是直接赋值:

highCost <- data.frame()
for(i in 1:nrow(AirBnbListingsDublin)){  # 用nrow()比length(price)更稳妥,避免列数不一致的问题
    if(AirBnbListingsDublin$price[i] >= 1000){
        highCost <- rbind(highCost, AirBnbListingsDublin[i, ])
    }
}

不过要注意:这种循环+rbind的方式在数据量大的时候效率很低,因为每次rbind都会重新创建数据框,这并不是R的最优写法。

方案2:R风格的向量式筛选(强烈推荐)

R的核心优势是向量操作,完全不需要循环就能轻松搞定这个需求,代码更简洁高效:

# 基础R原生写法
highCost <- AirBnbListingsDublin[AirBnbListingsDublin$price >= 1000, ]

# 或者用dplyr包的filter函数(代码可读性更高,适合复杂筛选场景)
library(dplyr)
highCost <- AirBnbListingsDublin %>% filter(price >= 1000)

这种写法会直接筛选出所有price≥1000的行,一次性存入highCost,既快又不容易出错。

内容的提问来源于stack exchange,提问作者Carl O'Beirne

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:13:29