df=data.frame(x=c(1,1,2,2,3,3) ,y=c(2,3,4,6,2,7)) myuniq=function(df){ if(NROW(df)<2){ return(df) } else { uniq=!apply(apply(df,2,"%in%",df[1,]),1,any) return(rbind(df[1,],myuniq(df[uniq,]))) } } myuniq(df) set.seed(123456) n=100000 df=data.frame(x=sample(1:10,n,replace = T) ,y=sample(1:10,n,replace = T)) # 允許 x,y 同列相等 myuniq(df) # 不允許 x,y 同列相等 myuniq(df[!(df$x==df$y),])