How about the next use of a recursive function.
y2 <- c(0,0,NA,0,0,0,0)
y <- c(0,0,0,NA,NA,0)
x <- c(0,0,0,0)
li <-list(y2 = y2,y = y,x = x)
I define a recursive function collapseListthat recursively deletes list entries if they are an ordered subset of other list items.
collapseList <- function(lst) {
s <- sapply(lst, paste, collapse = "");
if (sum(grepl(s[1], s)) > 1) {
lst <- lst[-1];
collapseList(lst);
}
else lst;
}
Results based on your sample list:
li <- li[order(sapply(li, length))];
li <- collapseList(li);
li;
@ set example
li <- list(
x = c(0,0,0,0),
y = c(0,NA,0,0,0),
y2 = c(NA,NA,0,0,0,0));
li <- li[order(sapply(li, length))];
collapseList(li);