HI, You could try these: tmp1<-list(a=1,b=NA,c=3,d=NA) lapply(tmp1,function(x) if(is.na(x)) NULL else x) #changing NA to NULL
#$a #[1] 1 # #$b #NULL # #$c #[1] 3 # #$d #NULL #other case; tmp2<-list(a=1,b=3,c=4,d=5) #want to change list elements "a", "c" to NULL tmp3<-lapply(tmp2,function(x) {if(names(tmp2)[match.call()[[2]][[3]]]%in% c("a","c")) NULL else x}) tmp3 #$a #NULL # #$b #[1] 3 # #$c #NULL # #$d #[1] 5 A.K. ----- Original Message ----- From: Gonçalo Ferraz <gferra...@gmail.com> To: r-help@r-project.org Cc: Sent: Thursday, November 15, 2012 4:01 PM Subject: [R] assigning NULL to a list element without changing the length of the list Hi, I have a list: tmp0 <- list(a=1, b=2, c=3) And I realize that I can append a NULL element to the end of this list, just by writing: length(tmp0) <- 4 Now, the question is, how can I assign NULL to one of the existing list elements without changing the length of the list? Please note I am working from inside a for loop that is working on one list element at a time and in some circumstances I want to set one element to NULL. So, specifying the whole list again as in: tmp0 <- list(a=1,b=NULL,c=3) is not an option. But writing, say: tmp0 [[2]] <- NULL is not an option either, because it leaves me with a list of length 2. Is there a solution for this? Thank you ______________________________________________ R-help@r-project.org mailing list 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. ______________________________________________ R-help@r-project.org mailing list 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.