R如何使用for循环+if语句或无循环方法删除dataframe指定条件行
R语言删除指定行的实现方案
1. for循环+if语句实现
注意:遍历删除行时需采用倒序遍历,正序遍历会因为删除行后后续行索引自动前移,出现漏处理的问题
# 从最后一行往第一行遍历 for (i in nrow(dataFrameMio):1) { # 判断当前行numeri取值是否为2 if (dataFrameMio$numeri[i] == 2) { # 删除对应索引的行 dataFrameMio <- dataFrameMio[-i, ] } }
2. 无循环实现方案(更适合大数据量场景)
R原生支持矢量运算,无循环方案的执行效率远高于自定义for循环,是更推荐的写法:
- 基础R逻辑索引写法
# 直接筛选保留numeri不等于2的行 dataFrameMio <- dataFrameMio[dataFrameMio$numeri != 2, ] # 如果数据存在NA值,用which写法更稳妥,会自动排除NA行 dataFrameMio <- dataFrameMio[which(dataFrameMio$numeri != 2), ]
- dplyr包简洁写法(适合tidyverse生态用户)
library(dplyr) dataFrameMio <- filter(dataFrameMio, numeri != 2)
内容的提问来源于stack exchange,提问作者Gennaro Arguzzi
相关产品推荐
相关产品推荐

