how to find a row index in a matrix or a data frame ?
On Thu, Nov 25, 2010 at 4:59 AM, Luedde, Mirko <mirko.luedde at sap.com> wrote:
Dear all, this looks pretty much a standard problem, but I couldn't find a satisfying and understandable solution. (A) Given a data frame (or matrix), e.g. ? ? ?x <- data.frame(A=c(1, 2, 2), B=c(4, 5, 5)) ? ?and a row of this data frame, e.g. ? ? ?r <- c(2, 5) ? ?I need to find one row index i (or all such indices) such that r ? ?is at the i-th row in x, that is, the expression ? ? ?all(x[i,]==as.list(r)) ? ?evaluates to TRUE. ?I can not evaluate an expression like ? ? ?x[x[,1]==2 & x[,2]==5,] ? ?because I do not know in advance how many columns x will have. ? ?Basically, thus, I'm looking for an equivalent of "vectorfind" in ? ?Scilab. (B) Which would be the most appropriate data type for x, matrix or ? ?data frame or another type? (C) What will be better, searching for rows or searching for columns?
Try this: which(apply(t(x) == r, 2, all)) or this: which(colSums((t(x) != r) > 0) == 0)
Statistics & Software Consulting GKX Group, GKX Associates Inc. tel: 1-877-GKX-GROUP email: ggrothendieck at gmail.com