[R] cannot print a list with cat

Boris Steipe bor|@@@te|pe @end|ng |rom utoronto@c@
Mon Oct 24 15:05:01 CEST 2022


???  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 using gmail.com> wrote:
> 
> В Mon, 24 Oct 2022 20:39:33 +0800
> "Steven T. Yen" <styen using 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 using 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.



More information about the R-help mailing list