如何在每次迭代后保存循环内数据框中发生的更改?通过以下代码,我想从我的数据框(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,]
}
}
答案 0 :(得分:1)
更惯用的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,]