..............................................<°}))><........
 ) ) ) ) )
( ( ( ( (    Prof. Philippe Grosjean
 ) ) ) ) )
( ( ( ( (    Numerical Ecology of Aquatic Systems
 ) ) ) ) )   Mons University, Belgium
( ( ( ( (
..............................................................

On 11 Sep 2014, at 17:18, Duncan Murdoch <murdoch.dun...@gmail.com> wrote:

> On 11/09/2014 3:29 AM, Philippe GROSJEAN wrote:
>> On 11 Sep 2014, at 08:24, PIKAL Petr <petr.pi...@precheza.cz> wrote:
>> 
>> > Hi
>> >
>> > You still do not disclose important info about details of your functions. 
>> > However, when you want to perform indexing like you show, you maybe can 
>> > get rid of NULL and use zero instead.
>> >
>> >> a<-1:5
>> >> a[-c(1,3)]
>> > [1] 2 4 5
>> >> a[-c(0,1,3)]
>> > [1] 2 4 5
>> >> a[-c(1,0,3)]
>> > [1] 2 4 5
>> >> a[-c(0,1,0,3,0)]
>> > [1] 2 4 5
>> >
>> > However I am almost sure that you are fishing in murky waters and what you 
>> > do by cycle and fiddling with NULL elements can be achieved by more 
>> > efficiently.
>> >
>> … and also look at this weird case:
>> 
>> > a <- 1:5
>> > a[-0]
>> integer(0)
>> > a[-c(0, 0)]
>> integer(0)
> 
> What do you find to be weird about this?  As far as I can see it is acting 
> exactly as the documentation suggests it should:  -0 is treated the same as 
> 0.  Zero as an index selects nothing.  Two zeroes also select nothing.  
> What's the surprise?
> 
> Duncan Murdoch
> 
No, it is not a surprise, nor a problem with the behaviour of R, really. It is 
just in connection with Petr's suggestion to replace NULL by 0. I just wanted 
to indicate that it could produce unwanted results in several cases.

Philippe



>> 
>> Best,
>> 
>> Philippe
>> 
>> 
>> > Regards
>> > Petr
>> >
>> >
>> >> -----Original Message-----
>> >> From: r-help-boun...@r-project.org [mailto:r-help-bounces@r-
>> >> project.org] On Behalf Of PO SU
>> >> Sent: Thursday, September 11, 2014 3:54 AM
>> >> To: Duncan Murdoch
>> >> Cc: R. Help
>> >> Subject: Re: [R] some question about vector[-NULL]
>> >>
>> >>
>> >> Tks, i think using logical index is a way, but to do that, i have to
>> >> keep a vector as long as the original vector. that's, to exclude
>> >> position 1 and 3 from
>> >> a<-1:5
>> >> I have to let b<-c(F,T,F,T,T) and exec a[b], not a[-c(1,3)]. which
>> >> c(1,3) is much shorter than b if a is a long vector. that's, b would
>> >> be c(F,T,F,T,T,T,T,......,T) I thought a way ,
>> >> let d<-c(a,1)
>> >> that d<-c(1,2,3,4,5,1)
>> >> and initialize the index vector   iv to length(d). that is iv<-6.
>> >> then, d[-iv] is always equal  a[- i ] ,  whether i is NULL or not.
>> >> Because if i is NULL ,then iv is 6, if i is 2.then iv is c(2,6) and so
>> >> on.......
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >> --
>> >>
>> >> PO SU
>> >> mail: desolato...@163.com
>> >> Majored in Statistics from SJTU
>> >>
>> >>
>> >>
>> >>
>> >> At 2014-09-11 01:58:46, "Duncan Murdoch" <murdoch.dun...@gmail.com>
>> >> wrote:
>> >>> On 10/09/2014 12:20 PM, William Dunlap wrote:
>> >>>> Can you make your example a bit more concrete?  E.g., is your 'index
>> >>>> vector' A an integer vector?  If so, integer(0), an integer vector
>> >>>> with no elements, would be a more reasonable return value than NULL,
>> >>>> an object of class NULL with length 0, for the 'not found' case and
>> >>>> you could check for that case by asking if length(A)==0.
>> >>>>
>> >>>> Show us typical inputs and expected outputs for your function (i.e.,
>> >>>> the problem you want to solve).
>> >>>
>> >>> I think the problem with integer(0) and NULL is the same:  a[-i]
>> >> doesn't
>> >>> act as expected (leaving out all the elements of i, i.e. nothing) if i
>> >>> is either of those.  The solution is to use logical indexing, not
>> >>> negative numerical indexing.
>> >>>
>> >>> Duncan Murdoch
>> >>>>
>> >>>> Bill Dunlap
>> >>>> TIBCO Software
>> >>>> wdunlap tibco.com
>> >>>>
>> >>>>
>> >>>> On Wed, Sep 10, 2014 at 8:53 AM, 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.
>> >
>> > ________________________________
>> > Tento e-mail a jakékoliv k němu připojené dokumenty jsou důvěrné a jsou 
>> > určeny pouze jeho adresátům.
>> > Jestliže jste obdržel(a) tento e-mail omylem, informujte laskavě 
>> > neprodleně jeho odesílatele. Obsah tohoto emailu i s přílohami a jeho 
>> > kopie vymažte ze svého systému.
>> > Nejste-li zamýšleným adresátem tohoto emailu, nejste oprávněni tento email 
>> > jakkoliv užívat, rozšiřovat, kopírovat či zveřejňovat.
>> > Odesílatel e-mailu neodpovídá za eventuální škodu způsobenou modifikacemi 
>> > či zpožděním přenosu e-mailu.
>> >
>> > V případě, že je tento e-mail součástí obchodního jednání:
>> > - vyhrazuje si odesílatel právo ukončit kdykoliv jednání o uzavření 
>> > smlouvy, a to z jakéhokoliv důvodu i bez uvedení důvodu.
>> > - a obsahuje-li nabídku, je adresát oprávněn nabídku bezodkladně přijmout; 
>> > Odesílatel tohoto e-mailu (nabídky) vylučuje přijetí nabídky ze strany 
>> > příjemce s dodatkem či odchylkou.
>> > - trvá odesílatel na tom, že příslušná smlouva je uzavřena teprve 
>> > výslovným dosažením shody na všech jejích náležitostech.
>> > - odesílatel tohoto emailu informuje, že není oprávněn uzavírat za 
>> > společnost žádné smlouvy s výjimkou případů, kdy k tomu byl písemně 
>> > zmocněn nebo písemně pověřen a takové pověření nebo plná moc byly 
>> > adresátovi tohoto emailu případně osobě, kterou adresát zastupuje, 
>> > předloženy nebo jejich existence je adresátovi či osobě jím zastoupené 
>> > známá.
>> >
>> > This e-mail and any documents attached to it may be confidential and are 
>> > intended only for its intended recipients.
>> > If you received this e-mail by mistake, please immediately inform its 
>> > sender. Delete the contents of this e-mail with all attachments and its 
>> > copies from your system.
>> > If you are not the intended recipient of this e-mail, you are not 
>> > authorized to use, disseminate, copy or disclose this e-mail in any manner.
>> > The sender of this e-mail shall not be liable for any possible damage 
>> > caused by modifications of the e-mail or by delay with transfer of the 
>> > email.
>> >
>> > In case that this e-mail forms part of business dealings:
>> > - the sender reserves the right to end negotiations about entering into a 
>> > contract in any time, for any reason, and without stating any reasoning.
>> > - if the e-mail contains an offer, the recipient is entitled to 
>> > immediately accept such offer; The sender of this e-mail (offer) excludes 
>> > any acceptance of the offer on the part of the recipient containing any 
>> > amendment or variation.
>> > - the sender insists on that the respective contract is concluded only 
>> > upon an express mutual agreement on all its aspects.
>> > - the sender of this e-mail informs that he/she is not authorized to enter 
>> > into any contracts on behalf of the company except for cases in which 
>> > he/she is expressly authorized to do so in writing, and such authorization 
>> > or power of attorney is submitted to the recipient or the person 
>> > represented by the recipient, or the existence of such authorization is 
>> > known to the recipient of the person represented by the recipient.
>> > ______________________________________________
>> > 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.
> 

______________________________________________
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.

Reply via email to