R 如何从sapply的逻辑结果中筛选真值?
我是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(
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))