[R] assigning NULL to a list element without changing the length of the list
arun
smartpink111 at yahoo.com
Fri Nov 16 00:48:48 CET 2012
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 <gferraz29 at gmail.com>
To: r-help at 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 at 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.
More information about the R-help
mailing list