Thanks to everyone. I read ? sprint and the following is best I came up with. If there are ways to collapse the lines I'd be glad to know. Otherwise, I will live with this. Thanks again. cat(sprintf("\ntol???? = %e",mycontrol$tol), ??? sprintf("\nreltol? = %e",mycontrol$reltol), ??? sprintf("\nsteptol = %e",mycontrol$steptol), ??? sprintf("\ngradtol = %e",mycontrol$gradtol)) tol???? = 0.000000e+00 reltol? = 0.000000e+00 steptol = 1.000000e-08 gradtol = 1.000000e-10 On 10/24/2022 10:02 PM, Rui Barradas wrote:> Hello, > > There's also ?message. > > > msg <- sprintf("(tol,reltol,steptol,gradtol): %E %E %E %E", > > mycontrol$tol,mycontrol$reltol,mycontrol$steptol,mycontrol$gradtol) > message(msg) > > > Hope this helps, > > Rui Barradas > > ?s 14:25 de 24/10/2022, Steven T. Yen escreveu: >> Thank, Boris and Ivan. >> >> The simple command suggested by Ivan ( print(t(mycontrol)) ) worked. >> I went along with Boris' suggestion and do/get the following: >> >> cat(sprintf("(tol,reltol,steptol,gradtol): %E %E %E %E",mycontrol$tol, >> mycontrol$reltol,mycontrol$steptol,mycontrol$gradtol)) >> >> (tol,reltol,steptol,gradtol): 0.000000E+00 0.000000E+00 1.000000E-08 >> 1.000000E-12 >> >> This works great. Thanks. >> >> Steven >> >> On 10/24/2022 9:05 PM, Boris Steipe wrote: >> >>> ???? t() is the transpose function. It just happens to return your >>> list unchanged. The return value is then printed to console if it is >>> not assigned, or returned invisibly. Transposing your list is >>> probably not what you wanted to do. >>> >>> Returned values do not get printed from within a loop or from a >>> source()'d script. That's why it "works" interactively, but not from >>> a script file. >>> >>> If you want to print the contents of your list, just use: >>> ?? print(mycontrol) >>> >>> Or use some incantation with sprintf() if you want more control >>> about the format of what gets printed. Eg: >>> >>> ? cat(sprintf("Tolerance: %f (%f %%)", mycontrol$tol, >>> mycontrol$reltol)) >>> >>> etc. >>> >>> >>> B. >>> >>> >>> >>>> On 2022-10-24, at 08:47, Ivan Krylov <krylov.r00t at gmail.com> wrote: >>>> >>>> ? Mon, 24 Oct 2022 20:39:33 +0800 >>>> "Steven T. Yen" <styen at ntu.edu.tw> ?????: >>>> >>>>> Printing this in a main program causes no problem (as shown above). >>>>> But, using the command t(mycontrol) the line gets ignored. >>>> t() doesn't print, it returns a value. In R, there's auto-printing in >>>> the toplevel context (see ?withAutoprint), but not when you move away >>>> from the interactive prompt. I think that it should be possible to use >>>> an explicit print(t(mycontrol)) to get the behaviour you desire. >>>> >>>> -- >>>> Best regards, >>>> Ivan >>>> >>>> ______________________________________________ >>>> R-help at 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. >> >> ______________________________________________ >> R-help at 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.
"collapse the lines" means ?? If you mean that you want to control the precision (# of decimals places to show) then that is exactly what sprintf does. ?sprintf tells you how. If you mean something else, please specify more clearly -- or await a reply from someone with greater insight than I. -- Bert On Mon, Oct 24, 2022 at 8:28 AM Steven T. Yen <styen at ntu.edu.tw> wrote:> > Thanks to everyone. I read ? sprint and the following is best I came up > with. If there are ways to collapse the lines I'd be glad to know. > Otherwise, I will live with this. Thanks again. > > cat(sprintf("\ntol = %e",mycontrol$tol), > sprintf("\nreltol = %e",mycontrol$reltol), > sprintf("\nsteptol = %e",mycontrol$steptol), > sprintf("\ngradtol = %e",mycontrol$gradtol)) > > tol = 0.000000e+00 > reltol = 0.000000e+00 > steptol = 1.000000e-08 > gradtol = 1.000000e-10 > > On 10/24/2022 10:02 PM, Rui Barradas wrote: > > Hello, > > > > There's also ?message. > > > > > > msg <- sprintf("(tol,reltol,steptol,gradtol): %E %E %E %E", > > > > mycontrol$tol,mycontrol$reltol,mycontrol$steptol,mycontrol$gradtol) > > message(msg) > > > > > > Hope this helps, > > > > Rui Barradas > > > > ?s 14:25 de 24/10/2022, Steven T. Yen escreveu: > >> Thank, Boris and Ivan. > >> > >> The simple command suggested by Ivan ( print(t(mycontrol)) ) worked. > >> I went along with Boris' suggestion and do/get the following: > >> > >> cat(sprintf("(tol,reltol,steptol,gradtol): %E %E %E %E",mycontrol$tol, > >> mycontrol$reltol,mycontrol$steptol,mycontrol$gradtol)) > >> > >> (tol,reltol,steptol,gradtol): 0.000000E+00 0.000000E+00 1.000000E-08 > >> 1.000000E-12 > >> > >> This works great. Thanks. > >> > >> Steven > >> > >> On 10/24/2022 9:05 PM, Boris Steipe wrote: > >> > >>> ??? t() is the transpose function. It just happens to return your > >>> list unchanged. The return value is then printed to console if it is > >>> not assigned, or returned invisibly. Transposing your list is > >>> probably not what you wanted to do. > >>> > >>> Returned values do not get printed from within a loop or from a > >>> source()'d script. That's why it "works" interactively, but not from > >>> a script file. > >>> > >>> If you want to print the contents of your list, just use: > >>> print(mycontrol) > >>> > >>> Or use some incantation with sprintf() if you want more control > >>> about the format of what gets printed. Eg: > >>> > >>> cat(sprintf("Tolerance: %f (%f %%)", mycontrol$tol, > >>> mycontrol$reltol)) > >>> > >>> etc. > >>> > >>> > >>> B. > >>> > >>> > >>> > >>>> On 2022-10-24, at 08:47, Ivan Krylov <krylov.r00t at gmail.com> wrote: > >>>> > >>>> ? Mon, 24 Oct 2022 20:39:33 +0800 > >>>> "Steven T. Yen" <styen at ntu.edu.tw> ?????: > >>>> > >>>>> Printing this in a main program causes no problem (as shown above). > >>>>> But, using the command t(mycontrol) the line gets ignored. > >>>> t() doesn't print, it returns a value. In R, there's auto-printing in > >>>> the toplevel context (see ?withAutoprint), but not when you move away > >>>> from the interactive prompt. I think that it should be possible to use > >>>> an explicit print(t(mycontrol)) to get the behaviour you desire. > >>>> > >>>> -- > >>>> Best regards, > >>>> Ivan > >>>> > >>>> ______________________________________________ > >>>> R-help at 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. > >> > >> ______________________________________________ > >> R-help at 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. > > ______________________________________________ > R-help at 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.
?s 16:21 de 24/10/2022, Steven T. Yen escreveu:> Thanks to everyone. I read ? sprint and the following is best I came up > with. If there are ways to collapse the lines I'd be glad to know. > Otherwise, I will live with this. Thanks again. > > cat(sprintf("\ntol???? = %e",mycontrol$tol), > ??? sprintf("\nreltol? = %e",mycontrol$reltol), > ??? sprintf("\nsteptol = %e",mycontrol$steptol), > ??? sprintf("\ngradtol = %e",mycontrol$gradtol)) > > tol???? = 0.000000e+00 > reltol? = 0.000000e+00 > steptol = 1.000000e-08 > gradtol = 1.000000e-10 > > On 10/24/2022 10:02 PM, Rui Barradas wrote: >> Hello, >> >> There's also ?message. >> >> >> msg <- sprintf("(tol,reltol,steptol,gradtol): %E %E %E %E", >> >> mycontrol$tol,mycontrol$reltol,mycontrol$steptol,mycontrol$gradtol) >> message(msg) >> >> >> Hope this helps, >> >> Rui Barradas >> >> ?s 14:25 de 24/10/2022, Steven T. Yen escreveu: >>> Thank, Boris and Ivan. >>> >>> The simple command suggested by Ivan ( print(t(mycontrol)) ) worked. >>> I went along with Boris' suggestion and do/get the following: >>> >>> cat(sprintf("(tol,reltol,steptol,gradtol): %E %E %E %E",mycontrol$tol, >>> mycontrol$reltol,mycontrol$steptol,mycontrol$gradtol)) >>> >>> (tol,reltol,steptol,gradtol): 0.000000E+00 0.000000E+00 1.000000E-08 >>> 1.000000E-12 >>> >>> This works great. Thanks. >>> >>> Steven >>> >>> On 10/24/2022 9:05 PM, Boris Steipe wrote: >>> >>>> ???? t() is the transpose function. It just happens to return your >>>> list unchanged. The return value is then printed to console if it is >>>> not assigned, or returned invisibly. Transposing your list is >>>> probably not what you wanted to do. >>>> >>>> Returned values do not get printed from within a loop or from a >>>> source()'d script. That's why it "works" interactively, but not from >>>> a script file. >>>> >>>> If you want to print the contents of your list, just use: >>>> ?? print(mycontrol) >>>> >>>> Or use some incantation with sprintf() if you want more control >>>> about the format of what gets printed. Eg: >>>> >>>> ? cat(sprintf("Tolerance: %f (%f %%)", mycontrol$tol, >>>> mycontrol$reltol)) >>>> >>>> etc. >>>> >>>> >>>> B. >>>> >>>> >>>> >>>>> On 2022-10-24, at 08:47, Ivan Krylov <krylov.r00t at gmail.com> wrote: >>>>> >>>>> ? Mon, 24 Oct 2022 20:39:33 +0800 >>>>> "Steven T. Yen" <styen at ntu.edu.tw> ?????: >>>>> >>>>>> Printing this in a main program causes no problem (as shown above). >>>>>> But, using the command t(mycontrol) the line gets ignored. >>>>> t() doesn't print, it returns a value. In R, there's auto-printing in >>>>> the toplevel context (see ?withAutoprint), but not when you move away >>>>> from the interactive prompt. I think that it should be possible to use >>>>> an explicit print(t(mycontrol)) to get the behaviour you desire. >>>>> >>>>> -- >>>>> Best regards, >>>>> Ivan >>>>> >>>>> ______________________________________________ >>>>> R-help at 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. >>> >>> ______________________________________________ >>> R-help at 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.Hello, Here is a way. I leave it in may code lines to make it more understandale, I hope. # From Spencer's post (mycontrol <- list(tol=0, reltol=0, steptol=1e-8, gradtol=1e-12)) #> $tol #> [1] 0 #> #> $reltol #> [1] 0 #> #> $steptol #> [1] 1e-08 #> #> $gradtol #> [1] 1e-12 fmt_string <- paste0( "\ntol = %e", "\nreltol = %e", "\nsteptol = %e", "\ngradtol = %e" ) msg <- sprintf(fmt_string, mycontrol$tol, mycontrol$reltol, mycontrol$steptol, mycontrol$gradtol) msg #> [1] "\ntol = 0.000000e+00\nreltol = 0.000000e+00\nsteptol = 1.000000e-08\ngradtol = 1.000000e-12" cat(msg) #> #> tol = 0.000000e+00 #> reltol = 0.000000e+00 #> steptol = 1.000000e-08 #> gradtol = 1.000000e-12 message(msg) #> #> tol = 0.000000e+00 #> reltol = 0.000000e+00 #> steptol = 1.000000e-08 #> gradtol = 1.000000e-12 You also can write the format string all in a row. msg2 <- with(mycontrol, sprintf("\ntol = %e\nreltol = %e\nsteptol = %e\ngradtol = %e", tol, reltol, steptol, gradtol)) cat(msg2) #> #> tol = 0.000000e+00 #> reltol = 0.000000e+00 #> steptol = 1.000000e-08 #> gradtol = 1.000000e-12 Hope this helps, Rui Barradas
\n is for TERMINATING lines. Just like in C, C++, Java, C#, Python, Ruby, Erlang, pretty much everything that uses \n in strings at all. sprintf("gradtol = %e\n", mycontrol$gradtol) makes sense. More generally, sprintf() takes as many arguments as you care to give it, so cat(sprintf("tol = %e\nreltol = %e\nsteptol = %e\ngradtol = %e\n", mycontrol$tol, mycontrol$reltol, mycontrol$steptol, mycontrol$gradtol)) R being R, I'd prefer using ?format myself. On Tue, 25 Oct 2022 at 04:29, Steven T. Yen <styen at ntu.edu.tw> wrote:> Thanks to everyone. I read ? sprint and the following is best I came up > with. If there are ways to collapse the lines I'd be glad to know. > Otherwise, I will live with this. Thanks again. > > cat(sprintf("\ntol = %e",mycontrol$tol), > sprintf("\nreltol = %e",mycontrol$reltol), > sprintf("\nsteptol = %e",mycontrol$steptol), > sprintf("\ngradtol = %e",mycontrol$gradtol)) > > tol = 0.000000e+00 > reltol = 0.000000e+00 > steptol = 1.000000e-08 > gradtol = 1.000000e-10 > > On 10/24/2022 10:02 PM, Rui Barradas wrote: > > Hello, > > > > There's also ?message. > > > > > > msg <- sprintf("(tol,reltol,steptol,gradtol): %E %E %E %E", > > > > mycontrol$tol,mycontrol$reltol,mycontrol$steptol,mycontrol$gradtol) > > message(msg) > > > > > > Hope this helps, > > > > Rui Barradas > > > > ?s 14:25 de 24/10/2022, Steven T. Yen escreveu: > >> Thank, Boris and Ivan. > >> > >> The simple command suggested by Ivan ( print(t(mycontrol)) ) worked. > >> I went along with Boris' suggestion and do/get the following: > >> > >> cat(sprintf("(tol,reltol,steptol,gradtol): %E %E %E %E",mycontrol$tol, > >> mycontrol$reltol,mycontrol$steptol,mycontrol$gradtol)) > >> > >> (tol,reltol,steptol,gradtol): 0.000000E+00 0.000000E+00 1.000000E-08 > >> 1.000000E-12 > >> > >> This works great. Thanks. > >> > >> Steven > >> > >> On 10/24/2022 9:05 PM, Boris Steipe wrote: > >> > >>> ??? t() is the transpose function. It just happens to return your > >>> list unchanged. The return value is then printed to console if it is > >>> not assigned, or returned invisibly. Transposing your list is > >>> probably not what you wanted to do. > >>> > >>> Returned values do not get printed from within a loop or from a > >>> source()'d script. That's why it "works" interactively, but not from > >>> a script file. > >>> > >>> If you want to print the contents of your list, just use: > >>> print(mycontrol) > >>> > >>> Or use some incantation with sprintf() if you want more control > >>> about the format of what gets printed. Eg: > >>> > >>> cat(sprintf("Tolerance: %f (%f %%)", mycontrol$tol, > >>> mycontrol$reltol)) > >>> > >>> etc. > >>> > >>> > >>> B. > >>> > >>> > >>> > >>>> On 2022-10-24, at 08:47, Ivan Krylov <krylov.r00t at gmail.com> wrote: > >>>> > >>>> ? Mon, 24 Oct 2022 20:39:33 +0800 > >>>> "Steven T. Yen" <styen at ntu.edu.tw> ?????: > >>>> > >>>>> Printing this in a main program causes no problem (as shown above). > >>>>> But, using the command t(mycontrol) the line gets ignored. > >>>> t() doesn't print, it returns a value. In R, there's auto-printing in > >>>> the toplevel context (see ?withAutoprint), but not when you move away > >>>> from the interactive prompt. I think that it should be possible to use > >>>> an explicit print(t(mycontrol)) to get the behaviour you desire. > >>>> > >>>> -- > >>>> Best regards, > >>>> Ivan > >>>> > >>>> ______________________________________________ > >>>> R-help at 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. > >> > >> ______________________________________________ > >> R-help at 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. > > ______________________________________________ > R-help at 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]]