对于R中的循环 - 删除所有匹配一个变量的行

时间:2014-04-12 17:04:27

标签: r for-loop

我试图在我写的这个函数的帮助下,为具有匹配变量的案例(案例ID)完全删除数据集中的行:

del_row_func <- function(x){
  for(i in 1:length(x$FALL_ID)){
   for(j in 1:length(x$FALL_ID)){
     if(x$FALL_ID[i] == x$FALL_ID[j] & i != j){
       x[-i, ]
      }
    }
  }  
}

任何人都有一个想法,为什么它不起作用?

1 个答案:

答案 0 :(得分:2)

您的代码无法正常工作的原因是您没有修改或返回x。但是,有一种更好的方法可以删除具有重复ID的所有行:

dat = data.frame(FALL_ID = c(1, 2, 2, 3), y = 1:4)
dat
#   FALL_ID y
# 1       1 1
# 2       2 2
# 3       2 3
# 4       3 4
dat[!duplicated(dat$FALL_ID) & !duplicated(dat$FALL_ID, fromLast=T),]
#   FALL_ID y
# 1       1 1
# 4       3 4