R中过滤掉行维度为零的数据框

Filtering out the data frame whose row dimension is zero in R

我有很多数据框,例如 df1,df2,...,df11,其尺寸为 20,3; 40,4,; 0,5;...0,2;这些尺寸在我计算数据的程序中不会保持不变 frames.So 我想过滤掉那些行尺寸为零的数据框,如 dim(df3) 给出 0,5 这是我试过的

while(!dim(df(i))[1]==0)
 {

  DF=paste("df",c(1:11))

 }

谢谢

我们可以在将数据集保存在 list

之后使用 Filter
Filter(function(x) nrow(x)>1, mget(paste0("df", 1:11)))

或者另一种选择是 sapply 创建一个逻辑向量然后子集 list

lst <- mget(paste0("df", 1:11))
i1 <- sapply(lst, nrow)>0 
lst[i1]

这只是为了解释您可能哪里出错了。您应该更喜欢 for 而不是 while

如果你只想要非空的名字 data.frames :

total_num_dataframes = 4
DF  =character(0)
for (i in 1:total_num_dataframes){
  if (dim(get(paste0("df",i)))[1] != 0) 
    DF = c(DF,paste0("df",i))

}

如果您想要 data.frames 本身:

DF = vector('list', length = total_num_dataframes)
j = 1
for (i in 1:total_num_dataframes){
  if (dim(get(paste0("df",i)))[1] != 0) {
    DF[[j]] = get(paste0("df",i))
    j = j+1
  }

}