>From your tone, I gather you don't much like this behavior, and I can see your point, as it not very intuitive that setting a list element to NULL deletes any existing element at that index. But is there a better way to delete an element from a list? Maybe there should be.
Jeff Prof Brian Ripley <[EMAIL PROTECTED]> writes: >> I have just came across an (unexpected to me) behaviour of lists when >> assigning NULLs to list elements. I understand that a NULL is a valid R >> object, thus assigning a NULL to a list element should yield exactly the >> same result as assigning any other object. So I was surprised when >> assigning a NULL in fact removed the element from the list. Is this an >> intended behaviour? If so, does anybody know where is it documented and >> what is a good way around? > > Yes, it was apparently intended: R has long done this. > > x <- list(a=c(1L,2L), b=matrix(runif(4),2,2), c=LETTERS[1:3]) > x[2] <- list(NULL) > > is what I think you are intending. > > See e.g. the comment in subassign.c > > /* If "val" is NULL, this is an element deletion */ > /* if there is a match to "nlist" otherwise "x" */ > /* is unchanged. The attributes need adjustment. */ -- Jeff ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel