[R] Deleting many list elements in one time
William Dunlap
wdunlap at tibco.com
Mon Apr 5 19:11:09 CEST 2010
> -----Original Message-----
> From: r-help-bounces at r-project.org
> [mailto:r-help-bounces at r-project.org] On Behalf Of Duncan Murdoch
> Sent: Monday, April 05, 2010 8:24 AM
> To: anna
> Cc: r-help at r-project.org
> Subject: Re: [R] Deleting many list elements in one time
>
> On 05/04/2010 11:17 AM, anna wrote:
> > Hi guys, here is a simple thing I want to do but it doesn't work:
> > I have a vector of the element indexes that I want to
> delete called index
> > so when I write myList[[index]] <- NULL to delete these
> elements here is
> > what I get:
> > Error in myList[[index]] <- NULL :
> > more elements supplied than there are to replace
> > Isn't it possible to delete multiple elements?
>
> If your index is a list of numerical indices as opposed to
> names, then
> just do
>
> myList <- myList[-index]
>
> the same way you'd delete elements from any vector.
>
> If index is a vector of names, you need to convert it to
> numbers, using
> something like
>
> indexnums <- which( names(myList) %in% index )
>
> and then use myList[-indexnums].
If none of names(myList) are in the index vector then
indexnums will be integer(0) and myList[-integer(0)]
will be the same as myList[integer(0)] which has length
zero. Hence you should check for length(indexnums)>0
before doing the subscripting.
Logical subscripting avoids that trap
isNameInIndex <- names(myList) %in% index
myList[!isNameInIndex]
(Read the '[' as 'such that').
Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com
>
> Duncan Murdoch
>
> ______________________________________________
> 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