r从数据帧中删除大于n个零值的行

  • 本文关键字:大于 数据帧 删除 r
  • 更新时间 :
  • 英文 :


我在R工作,我有一个大的数据框架与许多行和列。下面的数据帧df是一个最小的例子。

#Example dataframe
row1 <- c(1,2,3,4,5,6,0,8)
row2 <- c(1,0,0,0,10,0,0,0)
row3 <- c(0,1,2,3,4,5,6,0)
df <- t(data.frame(str1,str2,str3))

我想删除具有>4个零值的行,产生以下所需的输出。然而,这必须以高吞吐量的方式完成。

#Desired Output
desired_output <- df[c(1,3),]

看来我需要做两件事。

  1. 计算每行包含0的列数,并在循环或apply函数中返回此信息。
  2. 使用这些信息来子集更广泛的数据集。

这是一个无效的尝试

outlist <- list()
for (x in 1:length(rownames(df))) {
out <- sapply(df[x,], function(x){sum(x>0)})
print(out)
append(outlist, out)
}
df %>% filter(rowSums(across(everything(), ~.x==0))<=4)

最新更新