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
}
}
我有很多数据框,例如 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
}
}