[英]Removing rows from R data frame using the for loop with if statement
[英]removing specific rows from a data frame within a loop in r
每次迭代后,如何保存循环中数据框中发生的更改? 通过以下代码,我想从数据帧(df)中删除某些行,这些行的值等于'v'。 这些代码运行良好,但是问题终于来了,只有迭代中最后一个i值的结果才影响数据帧!
for (i in 1:50){
v <- i+ 450
temp<- fn$sqldf("select count(V1) from df where V1='$v' ")
if (temp[1,] < 1000){
g <- temp[1,]
c <- v
print(paste("Topic number: ", c, "is less than 1000, with ", g, "records") )
new_df<- df[df$V1 != v,]
}
}
更惯用的R方式是:
reduced <- subset(df, V1 > 450 & V1 <= 500)
count <- table(reduced$V1)
V1OK <- as.integer(names(count)[count<1000])
filtered <- subset(reduced, V1 %in% V1OK)
如果您希望继续以sql为中心的观点,那么您的问题似乎就是在创建file3时,您是从每次迭代的新过程中生成它的(我不得不猜测file_new是什么)。 您可以在循环之前为每行设置一个标志:
V1OK <- rep(FALSE, nrow(DF))
并在循环中更新
V1OK <- V1OK | df$V1 !=v
在循环之后,您可以访问
file_new[V1OK,]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.