odocoileus
odocoileus

Reputation: 53

An extension of selecting rows with same results in different columns

I found this while searching for a similar approach.

Selecting rows with same result in different columns in R

Is there a way to search within a range of columns? Playing off the example in the link, what if instead of catch[catch$tspp.name == catch$elasmo.name,], is it possible to do this? catch[catch$tspp.name == c[23:56],] where R would search for values within columns 23 to 56 that match the tspp value?

Thanks in advance and please let me know whether it's better to post an independent question on a topic related to a previous post or to insert a follow up question within the aforementioned post.

Upvotes: 0

Views: 34

Answers (1)

mrip
mrip

Reputation: 15163

Here's one way to do it. This finds rows of X where the first column appears in columns 2 through 9.

> set.seed(1)
> X<-matrix(sample(10,100,T),10)
> X
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
 [1,]    3    3   10    5    9    5   10    4    5     3
 [2,]    4    2    3    6    7    9    3    9    8     1
 [3,]    6    7    7    5    8    5    5    4    4     7
 [4,]   10    4    2    2    6    3    4    4    4     9
 [5,]    3    8    3    9    6    1    7    5    8     8
 [6,]    9    5    4    7    8    1    3    9    3     8
 [7,]   10    8    1    8    1    4    5    9    8     5
 [8,]    7   10    4    2    5    6    8    4    2     5
 [9,]    7    4    9    8    8    7    1    8    3     9
[10,]    1    8    4    5    7    5    9   10    2     7
> X[rowSums(X[,1]==X[,2:9])>0,]
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    3    3   10    5    9    5   10    4    5     3
[2,]    3    8    3    9    6    1    7    5    8     8
[3,]    9    5    4    7    8    1    3    9    3     8
[4,]    7    4    9    8    8    7    1    8    3     9

Upvotes: 1

Related Questions