Dear list!

I have a problem with eliminate rows with all NA values in matrix of special class ("my.class"). Belowe is a example:

#class definition
setClass("my.class", representation(ID="character",  years="integer",  my.mat="matrix"))

data.1 <- new("my.class", ID = c("tA", "tB", "tC"), years = as.integer(c(2000, 2005, 2010, 2015, 2020)),
my.mat = matrix(c(NA, 1, NA, NA, 4, 3, 1, 5, 6, 2, NA, 5, 1, NA, 3), ncol = 3, byrow = TRUE))

data.1

#selection definition
setMethod("[", c("my.class", "numeric", "character"), function(x, i, j, ..., drop=TRUE) {
    IDx <- match(j, x@ID)
    if (any(is.na(IDx))) stop("invalid 'j'")
    initialize(x, ID = x@ID[IDx], years = x@years[i],  my.mat = x@my.mat[i, IDx, drop=FALSE])})

setMethod("[", c("my.class", "missing", "character"), function(x, i, j, ..., drop=TRUE) {
   
 x[(1:length(x@years)), j, ..., drop=drop]
})

setMethod("[", c("my.class", "missing", "numeric"), function(x, i, j, ..., drop=TRUE) {
    x[, x@ID[j], ..., drop=drop]
})

#R output
data.1[, c(1,3)]  # Extract Part of an Object (column 1 & 3)

An object of class “my.class”
Slot "ID":
[1] "tA" "tC"

Slot "years":
[1] 2000 2005 2010 2015 2020

Slot "my.mat":
     [,1] [,2]
[1,]   NA   NA
[2,]   NA    3
[3,]    1    6
[4,]    2    5
[5,]    1    3

But I would like to get like this:

data.1[,c(1,3)]  # Extract Part of an Object (column 1 & 3)

An object of class “my.class”
Slot "ID":
[1] "tA" "tC"

Slot "years": ### without year 2000 because there is no data (all are
 NA)
[1] 2005 2010 2015 2020

Slot "my.mat": ### without first row because there is no data (all are NA)
     [,1] [,2]
[1,]   NA    3
[2,]    1    6
[3,]    2    5
[4,]    1    3

With 'apply' I define which row has all NA values:

which(apply(MATRIX, 1, function(x) all(is.na(x))))

Please give any suggestions. Thanks a lot, OV
	[[alternative HTML version deleted]]

