[R] Remove empty list from list
Muhammad Subianto
msubianto at gmail.com
Mon Aug 28 19:20:30 CEST 2006
Dear all,
I am still working with "list".
If I have an empty list how can I remove from list data.
Here is a toy example:
x <- list(matrix(1:20, 5, 4),matrix(1:20, 5, 4),matrix(1:20, 5,
4),matrix(1:20, 5, 4),matrix(1:20, 5, 4))
y <- list(c(1, -1, -1, 1, 1),c(1, 1, -1, -1, -1),c(1, 1, 1, 1, 1),c(1,
1, -1, 1, -1),c(-1, -1, -1, -1, -1))
## Thanks to Gabor Grothendieck for this trick.
## SIMPLIFY? SIMPLIFY >< simplify
xy.list <- mapply(cbind, x, y, SIMPLIFY=FALSE)
point.class <- t(cbind(c(10,20,15,4,-1),c(21,10,15,34,-1),c(11,13,6,3,1),c(7,5,5,2,1),c(8,9,5,12,-1)))
class.diffsame <- points.neighb(as.matrix(point.class), xy.list, 5)
pd.class <- points.diff(class.diffsame,xy.list)
nc.test <- vector("list",length(pd.class))
for (i in 1:length(pd.class)) {
nc.test[[i]] <- pd.class[[i]]$point.diff
}
nc.test
> nc.test
[[1]]
[,1] [,2] [,3] [,4] [,5]
[1,] 1 6 11 16 1
[2,] 4 9 14 19 1
[3,] 5 10 15 20 1
[[2]]
[,1] [,2] [,3] [,4] [,5]
[1,] 1 6 11 16 1
[2,] 2 7 12 17 1
[[3]]
[,1] [,2] [,3] [,4] [,5]
[[4]]
[,1] [,2] [,3] [,4] [,5]
[1,] 3 8 13 18 -1
[2,] 5 10 15 20 -1
[[5]]
[,1] [,2] [,3] [,4] [,5]
>
I want to remove these:
nc.test[[3]]
nc.test[[5]]
Because my list data have more 1000 lists are there any simple way to do this?
Best, Muhammad Subianto
points.neighb <- function(p.class, list.nc, class.col) {
ntuples <- nrow(p.class)
instvec <- vector("list",length=ntuples)
for (i in 1:ntuples) {
# Thanks to Petr Pikal for this trick
instvec[[i]]$class.diff <- (p.class[i,class.col] -
list.nc[[i]][,class.col])!=0
instvec[[i]]$class.same <- (p.class[i,class.col] -
list.nc[[i]][,class.col])==0
}
instvec
}
points.diff <- function(p.class, list.nc) {
ntuples <- length(list.nc)
instvec <- vector("list",ntuples)
for (i in 1:ntuples) {
instvec[[i]]$point.diff <- list.nc[[i]][p.class[[i]]$class.diff,]
instvec[[i]]$point.same <- list.nc[[i]][p.class[[i]]$class.same,]
}
instvec
}
More information about the R-help
mailing list