May be i could add a extra elment to B,that's: F<-function( C ) { C<-C[-A] some processing... res<-NULL or some new index not included in A return(res) } so in a loop,
C<-c(B,1) tmpindex<-length(C) A<-tmpindex for( i in 1:100000) { D<-F(C) A<-c(A,D) } -- PO SU mail: desolato...@163.com Majored in Statistics from SJTU At 2014-09-10 11:53:01, "PO SU" <rhelpmaill...@163.com> wrote: > >Tks for your > >a <- list(ress = 1, res = NULL) >And in my second question, let me explain it : >Actually i have two vectors in global enviroment, called A and B .A is >initialized to NULL which used to record some index in B. >Then i would run a function F, and each time, i would get a index value or >NULL. that's, D<-F(B). D would be NULL or some index position in B. >But in the function F, though input is B, i would exclude the index value >from B recorded in A. That's : >F<-function( B ) { >B<-B[-A] >some processing... >res<-NULL or some new index not included in A >return(res) >} >so in a loop, >A<-NULL >for( i in 1:100000) { >D<-F(B) >A<-c(A,D) >} >I never know whether D is a NULL or a different index compared with indexes >already recorded in A. >Actually, A<-c(A,D) work well, i never worry about whether D is NULL or a real >index, but in the function F, B<-B[-A] won't work. >so i hope that, e.g. >a<-1:3 >a[-NULL] wouldn't trigger an error but return a. >Because, if i wrote function like the following: > >F<-function( B ) { >if( is.null(A)) >B<-B >else >B<-B[-A] >some processing... >res<-NULL or some new index not included in A >return(res) >} >May be after 5 or 10 loops, A would already not NULL, so the added if ..else >statement would be repeated in left 9999 loops which i would not like to see. > > > > > >-- > >PO SU >mail: desolato...@163.com >Majored in Statistics from SJTU > > > >At 2014-09-10 06:45:59, "Duncan Murdoch" <murdoch.dun...@gmail.com> wrote: >>On 10/09/2014, 3:21 AM, PO SU wrote: >>> >>> Dear expeRts, >>> I have some programming questions about NULL in R.There are listed as >>> follows: >>> 1. I find i can't let a list have a element NULL: >>> a<-list() >>> a$ress<-1 >>> a$res<-NULL >>> a >>> str(a) >> >>You can do it using >> >>a <- list(ress = 1, res = NULL) >> >>> How can i know i have a named element but it is NULL, not just get >>> a$xxxx,a$iiii,a$oooo there all get NULL >> >>That's a little harder. There are a few ways: >> >>"res" %in% names(a) & is.null(a[["res"]]) >> >>or >> >>identical(a["res"], list(res = NULL)) >> >>or >> >>is.null(a[[2]]) >> >>should all work. >> >>Generally because of the special handling needed, it's a bad idea to try >>to store NULL in a list. >> >>> 2.The most important thing: >>> a<-1:10 >>> b<-NULL or 1 >>> a<-c(a,b) will work so i don't need to know whether b is null or not,but: >>> a[-NULL] can't work!! i just need a[-NULL]==a , how can i reach this >>> purpose? >> >>Using !, and a logical test, e.g. >> >>a[!nullentry(a)] >> >>where nullentry() is a function based on one of the tests above, but >>applied to all entries. >> >>Duncan Murdoch >> >______________________________________________ >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.