首页 > 解决方案 > 使用 R 中的 for 循环过滤掉数据帧中的零

问题描述

我的全局环境中有一堆数据框,每个数据框都有 5 列,我想过滤掉所有这些数据框中仅在第 4 列和第 5 列中包含零的行。我尝试使用以下代码列出所有数据帧并运行 for 循环:

all_frames <- list(aa,bb,cc,dd,ee,ff,gg,hh,ii,jj)

for (i in all_frames) {
  i <- i[apply(i[,-c(1:3)], 1, function(x) !all(x==0)),]
      
    }

不幸的是,这不起作用,任何建议将不胜感激,谢谢!

标签: rfor-loop

解决方案


In base R you can subset using column names or column numbers. E.g.:

subset(mtcars, cyl == 4 & mpg < 25)
subset(mtcars, mtcars[, 2] == 4 & mtcars[, 1] < 25)

Simply replace mtcars with your dataframe and conditions

To process a list of dataframes use lapply

newdfs <- lapply(all_frames, function(x) subset(x, x[, 4] != 0 & x[, 5] != 0))

推荐阅读