[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