[Rd] justify hard coded in format.ftable

SOEIRO Thomas Thom@@@SOEIRO @end|ng |rom @p-hm@|r
Thu May 14 15:22:00 CEST 2020


Thanks for the links. I agree that such a feature would be a nice addition, and could make ftable even more useful.

In the same spirit, I think it could be useful to mention the undocumented base::as.data.frame.matrix function in documentation of table and xtabs (in addition to the already mentioned base::as.data.frame.table). The conversion from ftable/table/xtabs to data.frame is a common task that some users seem to struggle with (https://stackoverflow.com/questions/10758961/how-to-convert-a-table-to-a-data-frame).

tab <- table(warpbreaks$wool, warpbreaks$tension)
as.data.frame(tab) # reshaped table
as.data.frame.matrix(tab) # non-reshaped table

To sum up, for the sake of clarity, these proposals address two different topics:
- The justify argument would reduce the need to reformat the exported ftable
- An ftable2df-like function (and the mention of as.data.frame.matrix in the documentation) would facilitate the reuse of ftable results for further analysis.

Thank you very much,

Thomas

> If you are looking at ftable could you also consider adding a way to convert an ftable into a usable data.frame such as the ftable2df function defined here:
> 
> https://stackoverflow.com/questions/11141406/reshaping-an-array-to-data-frame/11143126#11143126
> 
> and there is an example of using it here:
> 
> https://stackoverflow.com/questions/61333663/manipulating-an-array-into-a-data-frame-in-base-r/61334756#61334756
> 
> Being able to move back and forth between various base class representations seems like something that would be natural to provide.
> 
> Thanks.
> 
> On Thu, May 14, 2020 at 5:32 AM Martin Maechler <maechler using stat.math.ethz.ch> wrote:
>>
>>>>>>> SOEIRO Thomas
>>>>>>>     on Wed, 13 May 2020 20:27:15 +0000 writes:
>>
>>> Dear all,
>>> I haven't received any feedback so far on my proposal to make 
>> "justify" argument available in stats:::format.ftable
>>
>>> Is this list the appropriate place for this kind of proposal?
>>
>> Yes, it is.. Actually such a post is even a "role model" post for 
>> R-devel.
>>
>>> I hope this follow-up to my message won't be taken as rude. Of course it's not meant to be, but I'm not used to the R mailing lists...
>>
>> well, there could be said much, and many stories told here ... ;-)
>>
>>> Thank you in advance for your comments,
>>
>>> Best,
>>> Thomas
>>
>> The main reasons for "no reaction" (for such nice post) probably are 
>> combination of the following
>>
>> - we are busy
>> - if we have time, we think other things are more exciting
>> - we have not used ftable much/at all and are not interested.
>>
>> Even though the first 2 apply to me, I'll have a 2nd look into your 
>> post now, and may end up well agreeing with your proposal.
>>
>> Martin Maechler
>> ETH Zurich  and  R Core team
>>
>>
>>
>>
>>>> Dear all,
>>>>
>>>> justify argument is hard coded in format.ftable:
>>>>
>>>> cbind(apply(LABS, 2L, format, justify = "left"),
>>>> apply(DATA, 2L, format, justify = "right"))
>>>>
>>>> It would be useful to have the possibility to modify the argument between c("left", "right", "centre", "none") as in format.default.
>>>>
>>>> The lines could be changed to:
>>>>
>>>> if(length(justify) != 2)
>>>> stop("justify must be length 2")
>>>> cbind(apply(LABS, 2L, format, justify = justify[1]),
>>>> apply(DATA, 2L, format, justify = justify[2]))
>>>>
>>>> The argument justify could defaults to c("left", "right") for backward compatibility.
>>>>
>>>> It could then allow:
>>>> ftab <- ftable(wool + tension ~ breaks, warpbreaks)
>>>> format.ftable(ftab, justify = c("none", "none"))
>>>>
>>>> Best regards,
>>>>
>>>> Thomas


More information about the R-devel mailing list