Question: I have a dataframe in which there are multiple columns (more than 30) that is saved in a list. I would like to apply the same criteria for all those columns without writing each code for each columns. I have example below to help understand my problem better

```
A<-c("A","B","C","D","E","F","G","H","I")
B<-c(0,0,0,1,2,3,0,0,0)
C<-c(0,1,0,0,1,2,0,0,0)
D<-c(0,0,0,0,1,1,0,1,0)
E<-c(0,0,0,0,0,0,0,1,0)
data<-data.frame(A,B,C,D,E)

```

Let say I have the above df as an example and I have saved the list of cols as below

```
list <- c("B","C","D","E")

```

I would like to use those cols with the same criteria as below

```
setDT(data)[B>=1 | C>=1 | D>=1 | E>=1]

```

And get the following result

```
   A B C D E
1: B 0 1 0 0
2: D 1 0 0 0
3: E 2 1 1 0
4: F 3 2 1 0
5: H 0 0 1 1

```

However, is there a way to get the above answer without writing each individual column criteria (e.g. B>=1 | C>=1 ....) since I have more than 30 cols in the actual data. Thanks a lot

Answer: 
For your specific example of checking if at least one value in a row is at least 1, you could use `rowSums`

```
data[rowSums(data[,-1]) > 0, ]
#   A B C D E
# 2 B 0 1 0 0
# 4 D 1 0 0 0 
# 5 E 2 1 1 0
# 6 F 3 2 1 0
# 8 H 0 0 1 1

```

If you have other criteria in mind, you might as well consider using `any` within `apply` 

```
ind <- apply(data[,-1], 1, function(x) {any(x >= 1)})
data[ind,]
#   A B C D E
# 2 B 0 1 0 0
# 4 D 1 0 0 0 
# 5 E 2 1 1 0
# 6 F 3 2 1 0
# 8 H 0 0 1 1

```
You could always use `Reduce`, this is nice because you can put any type of logic you want into the function:

A simple method might be:

```
data[Reduce("|", as.data.frame(data[,list] >= 1)),]
#  A B C D E
#2 B 0 1 0 0
#4 D 1 0 0 0
#5 E 2 1 1 0
#6 F 3 2 1 0
#8 H 0 0 1 1

```

A little explanation: `Reduce` successively applies the same function to each element of `x`. In this case the "|" operator is applied to each of the logical columns of the `data.frame`.

If you wanted to do more complicated logic checks you could do that with your own anonymous function.