如果数据帧R中的一行或多行包含0,则删除整个列
我有一个数据帧 我需要删除一行或多行中包含0的列,但我无法删除,我尝试了一些在此处找到的想法,但没有一个对我有效,有人有想法吗?您可以: df[applydf,1,FUN=functionx allx!=0,]如果数据帧R中的一行或多行包含0,则删除整个列,r,dataframe,R,Dataframe,我有一个数据帧 我需要删除一行或多行中包含0的列,但我无法删除,我尝试了一些在此处找到的想法,但没有一个对我有效,有人有想法吗?您可以: df[applydf,1,FUN=functionx allx!=0,] 另一种方法 library(dplyr) select_if(data, ~{!0 %in% unique(.)}) 我们可以将矢量化选项与基R中的行和一起使用,以删除具有任何0的行 df[!rowSums(!df),, drop = FALSE] # v1 v2 v3 #3
另一种方法
library(dplyr)
select_if(data, ~{!0 %in% unique(.)})
我们可以将矢量化选项与基R中的行和一起使用,以删除具有任何0的行
df[!rowSums(!df),, drop = FALSE]
# v1 v2 v3
#3 2 1 2
或者使用lappy和Reduce
或使用dplyr中的所有筛选器_
如果要删除列,请使用基于R的筛选器
还是带着睿智
数据
df[Reduce(`&`, lapply(df, `!=`, 0)),, drop = FALSE]
# v1 v2 v3
#3 2 1 2
library(dplyr)
df %>%
filter_all(all_vars(. != 0))
# v1 v2 v3
#1 2 1 2
Filter(function(x) !any(x ==0), df2)
# v2
#1 1
#2 2
#3 3
df2[sapply(df2, function(x) all(x != 0))]
# v2
#1 1
#2 2
#3 3
df <- data.frame(v1 = c(0, 1, 2), v2 = c(1, 0, 1), v3 = c(0, 1, 2))
df2 <- data.frame(v1 = c(0, 1, 2), v2 = c(1, 2, 3), v3 = c(1, 0, 3))