2013-03-05 148 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)應該工作。

但是,我會將這些作爲兩個獨立的函數編寫,並且爲了清楚起見而單獨進行每項檢查。