[R] most stable way to output text layout

Jeremie Juste jerem|eju@te @end|ng |rom gm@||@com
Sun Jun 13 12:16:58 CEST 2021


Hello Jim,


On Sunday, 13 Jun 2021 at 08:40, Jim Lemon wrote:
> Hi Jeremie,
> Or assuming that the matrix will always contain strings:
>
> tabify<-function(x,col_names=NULL) {
>  # convert NAs to "NA"
>  x[is.na(x)]<-"NA"
>  # if this matrix doesn't have any column names
>  if(is.null(col_names)) col_names<-LETTERS[1:ncol(x)]
>  # get the format argument for sprintf
>  tab_width<-max(nchar(c(col_names,x)))+1
>  # display the column names
>  cat(format(col_names,width=tab_width),"\n")
>  # display the matrix
>  apply(x,1,function(x) cat(format(x,width=tab_width),"\n"))
> }
> tabify(mat)
> mat_names<-c("first","second","third","fourth","fifth","sixth","seventh",
>  "eighth","ninth","tenth")
> tabify(mat,mat_names)


Many thanks for your suggestion, I haven't considered the horizontal
spacing before. The columns names do help as well.

Best regards,
Jeremie

>
> Jim
>
> On Sun, Jun 13, 2021 at 2:25 AM Jeremie Juste <jeremiejuste using gmail.com> wrote:
>>
>> Hello,
>>
>> I'm trying to print a razor thin front-end using just text matrices and
>> the command prompt.
>>
>> I admit that it is a bit crazy, it seems to do the job and is very quick
>> to implement...  Except that I don't know of to fix the layout.
>>
>> I'm just seeking to map column names to a standard domain in an
>> interactive way.
>>
>> For instance, at one iteration, the following matrix is produced:
>>
>> mat <- structure(c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
>> NA, NA, NA, NA, NA, NA, NA, "a", "b", "c", "d", "e", "f", "g",
>> "h", "i", "j", NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
>> NA, NA, NA, NA, NA, NA, NA, NA, "n_missing:", "n_unique:", "freq:",
>> NA, NA, NA, NA, NA, NA, NA, "0", "10", NA, "a", "1", NA, NA,
>> NA, NA, NA, NA, NA, NA, "b", "1", NA, NA, "best match: [1]:",
>> NA, NA, NA, NA, NA, "c", "1", NA, NA, "foo", NA, NA, NA, NA,
>> NA, "d", "1", NA, NA, NA, NA, NA), .Dim = c(10L, 10L))
>>
>>
>> which I represent in the console using the following command
>>
>>
>>     apply(
>>       mat,1,
>>       function(x) {
>>         x[is.na(x)] <-""
>>         cat(x,"\n")
>>       })
>>
>> Do you have any suggestion for how can I have better control on the
>> print layout of the  matrix so that I can fix the width of each cell?
>>
>> Best regards,
>> --
>> Jeremie Juste
>>
>> ______________________________________________
>> 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.
>

-- 
Jeremie Juste



More information about the R-help mailing list