Oh I thought that was just my experience of it !! So didn't want to slate it too much!!
Yes, I nearly said "without making it an object of objects". I guess it depends what they want to do with those objects in the end. Usually if I want a function to manipulate two things I create two functions. On Fri, 9 Aug 2024, 11:21 Bert Gunter, <bgunter.4...@gmail.com> wrote: > "Or use <<- assignment I think. (I usually return, but return can only > return one object and I think you want two or more" > > You can return any number of objects by putting them in a list and > returning the list. > Use of "<<-" is rarely a good idea in R. > > -- Bert > > On Fri, Aug 9, 2024 at 1:53 AM CALUM POLWART <polc1...@gmail.com> wrote: > > > > OK. The fact it's in a function is making things clearer. > > > > Are you trying to update the values of an object from within the > function, > > and have them available outside the function. I don't speak functional > > programming articulately enough but basically > > > > v <- 1 > > > > funA <- function() { > > v <- v+1 > > } > > > > funA() > > cat (v) > > > > # 1 > > > > You either return the v from the function so > > > > funB <- function() { > > v <- v+1 > > return (v) > > } > > > > v <- funB() > > cat (v) > > #2 > > > > Or use <<- assignment I think. (I usually return, but return can only > > return one object and I think you want two or more > > > > v <- 1 > > funC <- function() { > > v <<- v+1 > > } > > > > funC() > > cat (v) > > #2 > > > > On Fri, 9 Aug 2024, 09:03 Steven Yen, <st...@ntu.edu.tw> wrote: > > > > > Thanks. Hmm. The loop is doing what it is supposed to do. > > > > > > > try1<-function(joint12=FALSE,marg1=FALSE,marg2=FALSE, > > > + cond12=FALSE,cond21=FALSE){ > > > + # *************************************************** > > > + # Testing if loop > > > + # *************************************************** > > > + if(joint12){ > > > + {print ("joint12"); cat(joint12,"\n")} > > > + {print ("marg1"); cat(marg1,"\n")} > > > + } else if (marg1) { > > > + {print ("marg1"); cat(marg1,"\n")} > > > + {print ("joint12"); cat(joint12)} > > > + } else if (marg2) { > > > + {print ("marg2"); cat(marg2)} > > > + } else if (cond12) { > > > + {print ("cond12"); cat(cond12)} > > > + } else { > > > + {print ("cond21"); cat(cond21)} > > > + }} > > > > try1(joint12=TRUE) > > > [1] "joint12" > > > TRUE > > > [1] "marg1" > > > FALSE > > > > try1(marg1=TRUE) > > > [1] "marg1" > > > TRUE > > > [1] "joint12" > > > FALSE > > > > try1(marg2=TRUE) > > > [1] "marg2" > > > TRUE > > > > try1(cond12=TRUE) > > > [1] "cond12" > > > TRUE > > > > try1(cond21=TRUE) > > > [1] "cond21" > > > TRUE > > > > > > > On 8/9/2024 2:35 PM, CALUM POLWART wrote: > > > > > > Is something wrong in the initialisation part that we don't see? > > > > > > joint12 <- marg1 <-F > > > > > > marg1 <-T > > > > > > if (joint12) { > > > print ("joint 12") > > > cat (joint12) > > > } > > > > > > if (marg1) { > > > print("marg 1") > > > cat(marg1) > > > } > > > > > > Would probably be my diagnostic approach > > > > > > On Fri, 9 Aug 2024, 04:45 Steven Yen, <st...@ntu.edu.tw> wrote: > > > > > >> Can someone help me with the if loop below? In the subroutine, I > > >> initialize all of (joint12,marg1,marg2,cond12,cond21) as FALSE, and > call > > >> with only one of them being TRUE: > > >> > > >> > ,...,joint12=FALSE,marg1=FALSE,marg2=FALSE,cond12=FALSE,cond21=FALSE,,,, > > >> > > >> joint12 seems to always kick in, even though I call with, e.g., marg1 > > >> being TRUE and everything else being FALSE. My attempts with if... > else > > >> if were not useful. Please help. Thanks. > > >> > > >> v1<-cprob(z1,x1,a,b,mu1,mu2,rho,j+1,k+1) > > >> v0<-cprob(z0,x0,a,b,mu1,mu2,rho,j+1,k+1) > > >> > > >> ... > > >> > > >> me1<-me0<-NULL > > >> if(joint12) {me1<-cbind(me1,v1$p12); me0<-cbind(me0,v0$p12)} > > >> if(marg1) {me1<-cbind(me1,v1$p1); me0<-cbind(me0,v0$p1)} > > >> if(marg2) {me1<-cbind(me1,v1$p2); me0<-cbind(me0,v0$p2)} > > >> if(cond12) {me1<-cbind(me1,v1$pc12); me0<-cbind(me0,v0$pc12)} > > >> if(cond21) {me1<-cbind(me1,v1$pc21); me0<-cbind(me0,v0$pc21)} > > >> ... > > >> > > >> labels<-NULL > > >> if(joint12) labels<-c(labels,lab.p12) > > >> if(marg1) labels<-c(labels,lab.p1) > > >> if(marg2) labels<-c(labels,lab.p2) > > >> if(cond12) labels<-c(labels,lab.pc12) > > >> if(cond21) labels<-c(labels,lab.pc21) > > >> > > >> ______________________________________________ > > >> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > > >> 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. > > >> > > > > > > > [[alternative HTML version deleted]] > > > > ______________________________________________ > > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > > 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. > [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.