[R] cannot print a list with cat

Rui Barradas ru|pb@rr@d@@ @end|ng |rom @@po@pt
Mon Oct 24 16:02:28 CEST 2022


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