On Wed, Aug 12, 2015 at 2:23 PM, Lida Zeighami <lid.z...@gmail.com> wrote: > Thanks Sarah, > > I use your code in a loop, so each time I have different matrix, means > lofGT_met changed each time! > some times I have just one column in matrix so my matrix will be n*1 (the > number of rows is the same =n) > do you think it cause the error?
Not if it is really a two-dimensional object. That's why I suggested you provide a *reproducible example*. > onecol <- data.frame(aa=c(1, 2, 3, NA)) > onecol aa 1 1 2 2 3 3 4 NA > apply(onecol, 1, function(x)as.numeric(any(x == 2 & !is.na(x)))) [1] 0 1 0 0 > onecol <- as.vector(onecol[,1]) > onecol [1] 1 2 3 NA > apply(onecol, 1, function(x)as.numeric(any(x == 2 & !is.na(x)))) Error in apply(onecol, 1, function(x) as.numeric(any(x == 2 & !is.na(x)))) : dim(X) must have a positive length > > On Wed, Aug 12, 2015 at 1:12 PM, Sarah Goslee <sarah.gos...@gmail.com> > wrote: >> >> On Wed, Aug 12, 2015 at 2:04 PM, Lida Zeighami <lid.z...@gmail.com> wrote: >> > I applied this code in a loop function but since in some matrices there >> > isn't any 2, so I got the below error: >> > >> > idx<- apply(lofGT_met,1, function(x)as.numeric(any(x==2 & !is.na(x)))) >> > >> > >> > Error in apply(lofGT_met, 1, function(x){(any(x == 2)}) : >> > dim(X) must have a positive length >> >> That has nothing to do with whether there are any values of 2 in the >> data frame. The code I suggested can handle that: >> >> >> no2 <- structure(list(X125 = c(0L, 1L, 1L, 0L, 1L), X255 = c(1L, 1L, >> 1L, 1L, 0L), X558 = c(0L, 0L, 1L, 0L, 0L), X2366 = c(NA, NA, >> 1L, NA, 0L), X177 = c(0L, 0L, 0L, 0L, 0L), X255.1 = c(0L, 1L, >> 0L, 0L, 0L)), .Names = c("X125", "X255", "X558", "X2366", "X177", >> "X255.1"), class = "data.frame", row.names = c("aa", "bb", "cs", >> "de", "gh")) >> >> no2 >> apply(no2, 1, function(x)as.numeric(any(x == 2 & !is.na(x)))) >> >> >> > no2 >> X125 X255 X558 X2366 X177 X255.1 >> aa 0 1 0 NA 0 0 >> bb 1 1 0 NA 0 1 >> cs 1 1 1 1 0 0 >> de 0 1 0 NA 0 0 >> gh 1 0 0 0 0 0 >> > apply(no2, 1, function(x)as.numeric(any(x == 2 & !is.na(x)))) >> aa bb cs de gh >> 0 0 0 0 0 >> >> It also works for rows that are entirely NA. Thus, I'm forced to >> conclude that there's something odd about lofGT_met, and you'll need >> to provide more information about that data frame, and a reproducible >> example, for a solution to be offered. >> >> Sarah >> >> >> > >> > would you please let me know how to correct it? >> > Thanks >> > >> > On Mon, Aug 10, 2015 at 3:27 PM, Sarah Goslee <sarah.gos...@gmail.com> >> > wrote: >> >> >> >> Easy enough (note that your column names are problematic, though) >> >> >> >> > mydata <- structure(list(X125 = c(0L, 1L, 2L, 0L, 2L), X255 = c(1L, >> >> > 1L, >> >> + 1L, 1L, 0L), X558 = c(0L, 0L, 2L, 0L, 0L), X2366 = c(NA, NA, >> >> + 1L, NA, 0L), X177 = c(0L, 0L, 0L, 0L, 0L), X255.1 = c(0L, 1L, >> >> + 0L, 0L, 0L)), .Names = c("X125", "X255", "X558", "X2366", "X177", >> >> + "X255.1"), class = "data.frame", row.names = c("aa", "bb", "cs", >> >> + "de", "gh")) >> >> > mydata$idx <- apply(mydata, 1, function(x)as.numeric(any(x == 2 & >> >> > !is.na(x)))) >> >> > mydata >> >> X125 X255 X558 X2366 X177 X255.1 idx >> >> aa 0 1 0 NA 0 0 0 >> >> bb 1 1 0 NA 0 1 0 >> >> cs 2 1 2 1 0 0 1 >> >> de 0 1 0 NA 0 0 0 >> >> gh 2 0 0 0 0 0 1 >> >> >> >> Sarah >> >> >> >> On Mon, Aug 10, 2015 at 4:11 PM, Lida Zeighami <lid.z...@gmail.com> >> >> wrote: >> >>> >> >>> Hi there, >> >>> >> >>> I have a matrix contain 0,1,2, NA elements. >> >>> I want to add a column to this matrix with name of "idx" . then for >> >>> each >> >>> row, I should put 1 in this column (idx) if there is at least one 2 in >> >>> that >> >>> row otherwise I should put 0 in this column! >> >>> >> >>> for example mydata: >> >>> >> >>> 125 255 558 2366 177 255 >> >>> aa 0 1 0 NA 0 0 >> >>> bb 1 1 0 NA 0 1 >> >>> cs 2 1 2 1 0 0 >> >>> de 0 1 0 NA 0 0 >> >>> gh 2 0 0 0 0 0 >> >>> >> >>> >> >>> my output should be: >> >>> >> >>> >> >>> 125 255 558 2366 177 255 idx >> >>> aa 0 1 0 NA 0 0 0 >> >>> bb 1 1 0 NA 0 1 0 >> >>> cs 2 1 2 1 0 0 1 >> >>> de 0 1 0 NA 0 0 0 >> >>> gh 2 0 0 2 0 2 1 >> >>> > > ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.