[R] Max characters from deparse(substitute(.))?

William Dunlap wdunlap at tibco.com
Tue May 6 00:42:41 CEST 2014


Have you looked at the width.cutoff and nlines arguments to deparse?
width.cutoff controls how long a line can be and it quits producing
output (saving time and space) after nlines of output are produced.
You want essentially the following
   f0 <- function(x, maxChar=20) deparse(x, width.cutoff=maxChar, nlines=1)
or, to add the '...' to the end if something was cut off
  f1 <- function(x, maxChar=20) {
      # deparse warns and uses 65 if maxChar<20, so avoid that.
      retval <- deparse(x, width.cutoff=max(20, maxChar+1), nlines=1)
      if (nchar(retval) > maxChar) {
          retval <- paste0(substring(retval, 1, maxChar), "...")
      }
      retval
  }
Bill Dunlap
TIBCO Software
wdunlap tibco.com


On Mon, May 5, 2014 at 2:44 PM, Spencer Graves
<spencer.graves at structuremonitoring.com> wrote:
>        Is there a standard or or a standard utility to limit the size of
> deparse(substitute(.))?
>
>
>        Below please find an example of the problem plus one solution.
> If another solution already exists, I might prefer to use it.
>
>
>        Thanks,
>        Spencer
>
>
> ##
> ## Problem
> ##
> deparse.x0 <- function(x)deparse(substitute(x))
> deparse.a <- do.call(deparse.x0, list(letters))
> nchar(deparse.a) # unacceptable
>
> [1] 62 65  4
>
>
> ##
> ## Better
> ##
> deparse.x <- function(x, maxChar=20){
>    name.x <- deparse(substitute(x))
>    nch.x <- nchar(name.x)
>    name2 <- name.x[nch.x>0]
>    nch2 <- nch.x[nch.x>0]
>    if((length(name2)>1)){
>      name2 <- name2[1]
>    }
>    if(nch2[1]>maxChar){
>      name2 <- paste0(substring(name2, 1, maxChar), '...')
>    }
>    name2
> }
>
> do.call(deparse.x, list(letters)) # better
>
> [1] "c(\"a\", \"b\", \"c\", \"d\"..."
>
>
>
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list
> 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