R 如何从sapply的逻辑结果中筛选真值?

R 如何从sapply的逻辑结果中筛选真值?,r,dataframe,filter,R,Dataframe,Filter,我是R新手,为了检查列是否有负值,我使用了sapply() 但这并没有达到我的预期,并且得到了与之前相同的结果 我甚至试过下面的代码,但也没用: dt1[,lapply(dt1, FUN = function(x) all(x <= 0, na.rm = TRUE)) == TRUE] dt1[,lapply(dt1,FUN=function(x)all(x您不需要==TRUE。对于数据帧,这应该是有效的 dt1[, sapply(dt1, FUN = function(x) all(

我是R新手,为了检查列是否有负值,我使用了sapply()

但这并没有达到我的预期,并且得到了与之前相同的结果

我甚至试过下面的代码,但也没用:

dt1[,lapply(dt1, FUN = function(x) all(x <= 0, na.rm = TRUE)) == TRUE] 

dt1[,lapply(dt1,FUN=function(x)all(x您不需要
==TRUE
。对于数据帧,这应该是有效的

dt1[, sapply(dt1, FUN = function(x) all(x <= 0, na.rm = TRUE))]

使用
data.table
,我们可以使用

library(data.table)
dt1[, dt1[,  !colSums(.SD > 0)], with = FALSE]

或使用
选择

library(dplyr)
dt1 %>%
    select(where(~all(. <= 0))
库(dplyr)
dt1%>%

选择(where(~all(.thanking@Ronak Shah,我尝试了这个
dt1[,sappy(dt1,FUN=function(x))all(x我建议您首先决定要走哪条路。大体上,有3个选项。1)Base R 2)Tidyverse 3)data.table。从这些方法中选择一种,并试着专注于它。1、2和3之间有一些小的语法差异,您可以稍后了解。我主要使用1和2选项,很少使用
data.table
。我认为
r
如果没有
tidyverse
作为
tidymodel
modeltime
&很多它的增长似乎是通过使用
tidyverse
来引导的,所以我想最好只使用前两个。谢谢你的回复!!谢谢@akrun,我通常不使用
数据。table
不知道它会改变基本的r功能,需要使用
,with=FALSE
。再次感谢你的解决方案!!
library(data.table)
dt1[, sapply(dt1, FUN = function(x) all(x <= 0, na.rm = TRUE)), with = FALSE]
library(data.table)
dt1[, dt1[,  !colSums(.SD > 0)], with = FALSE]
library(dplyr)
dt1 %>%
    select(where(~all(. <= 0))