[R-pkg-devel] [FORGED] obscure syntax error

Jim Lemon drj|m|emon @end|ng |rom gm@||@com
Fri Mar 22 21:12:29 CET 2019


Hi Peter and Rolf,
In fact there was a missing EOL at the end, but I had already fixed
that. It was an error in a previous function (delim.table) and Rolf's
little function spotted it. Thanks to both of you for quick and
helpful answers.

Jim

On Fri, Mar 22, 2019 at 9:49 PM Rolf Turner <r.turner using auckland.ac.nz> wrote:
>
>
> On 22/03/19 11:18 PM, Jim Lemon wrote:
>
> > Hi,
> > I have been attempting to check a new version of the prettyR package,
> > and have struck a difficult problem. The check fails at the
> > installation, and when I track the error, it is "Unexpected end of
> > input" in the xtab function. I have tried a number of things as I
> > thought that it was a non-printing character (I have had that happen
> > before). I can paste the entire function into an R session and there
> > is no error. Has anyone struck an error like this before?
> >
> > xtab<-function(formula,data,varnames=NULL,or=TRUE,chisq=FALSE,phi=FALSE,
> >   html=FALSE,bgcol="lightgray") {
> >
> >   if(missing(formula))
> >    stop("Usage: xtab(formula,data,varnames=NULL,or=TRUE,chisq=FALSE,phi=FALSE\n")
> >   ft<-as.character(attr(terms(formula),"variables")[-1])
> >   nft<-length(ft)
> >   if(nft>2) {
> >    xt<-list()
> >    by.factor<-as.factor(data[[ft[nft]]])
> >    factor.levels<-levels(by.factor)
> >    factor.labels<-attr(data[,ft[nft]],"value.labels")
> >    if(!is.null(names(factor.labels))) factor.labels<-names(factor.levels)
> >    if(is.null(factor.labels)) factor.labels<-factor.levels
> >    nlevels<-length(factor.levels)
> >    for(i in 1:nlevels) {
> >     currentdata<-subset(data,by.factor==factor.levels[i])
> >     for(j in 1:dim(currentdata)[2])
> >      attr(currentdata[,j],"value.labels")<-attr(data[,j],"value.labels")
> >     currentcount<-length(currentdata[[nft]])
> >     totalcount<-length(data[[nft]])
> >     cat("\nCount for",ft[nft],"=",factor.labels[i],"is",currentcount,
> >      "(",round(100*currentcount/totalcount,1),"%)\n\n")
> >     rightside<-ifelse(nft>3,paste(ft[2:(nft-1)],sep="",collapse="+"),ft[2])
> >     next.formula<-as.formula(paste(ft[1],rightside,sep="-",collapse=""))
> >     xt[[i]]<-xtab(next.formula,data=currentdata,varnames=varnames,chisq=chisq,
> >      phi=phi,html=html,bgcol=bgcol)
> >    }
> >   }
> >   else {
> >    if(missing(data)) xt<-calculate.xtab(get(ft[1]),get(ft[2]),varnames=varnames)
> >    else xt<-calculate.xtab(data[,ft[1]],data[,ft[2]],varnames=varnames)
> >   }
> >   attr(xt,"class")<-"xtab"
> >   return(xt)
> > }
> >   Thanks for any pointers.
>
> I believe I have encountered phenomena like this where the error was
> actually in the *"previous"* function in the sequence of package
> functions stored in the *.rdb or *.rdx files in the "R" directory of the
> package.
>
> To track down where the error is actually occurring I cd to the R
> directory of the *source* package, start R, and do something like:
>
> phials <- list.files(pattern=".R$")
> for(phial in phials) {
>      cat(phial,"\n")
>      source(phial)
> }
>
> That should allow you to spot the loony pretty quickly.
>
> HTH
>
> cheers,
>
> Rolf
>
> --
> Honorary Research Fellow
> Department of Statistics
> University of Auckland
> Phone: +64-9-373-7599 ext. 88276



More information about the R-package-devel mailing list