substitute() does not have an argument 'list'; it does have 'env'.
Replace this line: list = list (member = as.name (member), with env = list (member = as.name (member), -Peter Ehlers On 2010-05-14 3:09, Gil Tomás wrote:
Dear list, A while ago I found in the web a function (sadly I can't credit the author as I don't remember where I picked it up from) whose output is a dataframe that lists for every object in the global environment its class, mode, dim& length (where applicable). It is meant to be an upgrade to the ls () function with a far more informative and detailed output and it quickly became one of my most frequent calls in any R session (source added to my .Rprofile). However, since I upgraded to R 2.11, the function stopped working, retrieving the following error: ****** R> ll () Error in substitute({ : unused argument(s) (list = list(member = as.name(member), property = property, fcn = as.name(property))) ****** This seems to be due to a change in the substitute function in R 2.11, as described in the release notes: ****** Primitive functions UseMethod(), attr(), attr<-(), on.exit(), retracemem() and substitute() now use standard argument matching (rather than positional matching). This means that all multi-argument primitives which are not internal now use standard argument matching except where positional matching is desirable (as for switch(), call(), .C() ...). ****** I've tried to debug it myself, but unfortunately my knowledge of R is not deep enough to find a compatible version of the function with R 2.11 yet. Here is the ll () function: ****** ll<- function() { df<- NULL envir<- parent.frame () for (member in ls (envir = envir)) { oneRow<- list (member = member) for (property in c ("class", "mode", "dim", "length")) { value<- eval (substitute ( # this is the call producing the error in R 2.11 { fcn<- get (property, mode = "function") fcn (member) }, list = list (member = as.name (member), property = property, fcn = as.name (property)) ), envir = envir) if (is.null (value)) value<- "NULL" else if (is.vector (value)&& length (value)> 1) value<- sprintf ("c(%s)", paste (value, collapse = ",")) else if (is.list (value)) value<- unlist (value) if (length (value)> 0) value<- value[1] value<- as.character (value) oneRow[[property]]<- value } df<- rbind (df, as.data.frame (oneRow)) } df } ****** Could anyone give me a hint as how to tweak the substitute call to render it compatible with R 2.11? Any help greatly appreciated, Gil ______________________________________________ R-help@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.
______________________________________________ R-help@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.