pkensche at cmbi.ru.nl
2006-Jul-28 11:53 UTC
[Rd] substitute(INDICES) in by.data.frame returns invalid multi-line name (PR#9108)
Full_Name: Philip Kensche
Version: 2.3.0
OS: Redhat Linux
Submission from: (NULL) (131.174.88.204)
Try this:
--
x <- data.frame(the.first.column=c("A"),
the.second.column=c("b"),
the.third.column=c("d"), and.many.more.columns=c("e"))
by(x, paste(x$the.first.column, x$the.second.column, x$and.many.more.columns,
sep="."), function (y) { print("Hello!") })
--
The following error message is produced on my system:
Error in "names<-.default"(`*tmp*`, value =
c("paste(x$the.first.column,
x$the.second.column, x$and.many.more.columns, ", :
'names' attribute [2] must be the same length as the vector [1]
Calling substitute(INDICES) after debug(by.data.frame) returns:
--
paste(x$the.first.column, x$the.second.column, x$and.many.more.columns,
sep = ".")
--
i.e. the sep = ... is on the next line.
Greetings,
Philip
Duncan Murdoch
2006-Jul-28 12:28 UTC
[Rd] substitute(INDICES) in by.data.frame returns invalid multi-line name (PR#9108)
On 7/28/2006 7:53 AM, pkensche at cmbi.ru.nl wrote:> Full_Name: Philip Kensche > Version: 2.3.0This version is obsolete, but the error does occur in the current R-patched.> OS: Redhat Linux > Submission from: (NULL) (131.174.88.204) > > > Try this: > > -- > x <- data.frame(the.first.column=c("A"), the.second.column=c("b"), > the.third.column=c("d"), and.many.more.columns=c("e")) > > by(x, paste(x$the.first.column, x$the.second.column, x$and.many.more.columns, > sep="."), function (y) { print("Hello!") }) > -- > > The following error message is produced on my system: > > Error in "names<-.default"(`*tmp*`, value = c("paste(x$the.first.column, > x$the.second.column, x$and.many.more.columns, ", : > 'names' attribute [2] must be the same length as the vector [1] > > Calling substitute(INDICES) after debug(by.data.frame) returns: > -- > paste(x$the.first.column, x$the.second.column, x$and.many.more.columns, > sep = ".") > -- > i.e. the sep = ... is on the next line.The problem is that names(IND) <- deparse(substitute(INDICES)) wraps the long expression; a patch is to replace that line with names(IND) <- deparse(substitute(INDICES), width=500) which would need a much longer line to trigger the error, or names(IND) <- deparse(substitute(INDICES))[1] I'll do the latter, and look for other instances of the same sort of thing. Duncan Murdoch