2013-03-05 102 views
0

参考另一篇文章#Filtering out multiple columns in R;在那里它被要求过滤所有0的列(列中的所有值都是0)。使用以下代码:过滤掉R中的列

f0 <- function(x) any(x!=0) & is.numeric(x) 
trainingdata <- lapply(trainingdata, function(data) cbind(label=data$label, 
           colwise(identity, f0)(data))) 

可以过滤掉只包含0的列。还需要过滤掉只包含1的列(我的意思是列中的所有值都是1)。我试过如下:

f0 <- function(x) all(x==1) | any(x!=0) & is.numeric(x) 

OR

f0 <- function(x) all(x!=1) | any(x!=0) & is.numeric(x) 

,但它不工作。

+3

你的第二个函数使用逻辑“AND”而不是“OR”和检查“any(x!= 1)”应该可以工作。但是,我会将这些作为两个独立的函数编写,并且为了清晰起见,每个函数都会独立进行检查 – Justin 2013-03-05 17:07:46

+0

@Justin。谢谢。完美工作。 – Shahzad 2013-03-05 17:14:01

回答

2

您的第二个函数逻辑AND而不是OR和检查any(x!=1)应该工作。

但是,我会将这些作为两个独立的函数编写,并且为了清楚起见而单独进行每项检查。