Karl Brand
2010-Dec-01 14:35 UTC
[R] attempted merge() returns: cannot coerce type 'closure' to vector of type 'any'
Hi Dimtris and esteemed useRs, I don't understand why i get this error message when attempting to use merge() - > temp <- merge(x, y[,17, drop=FALSE], by=rownames, sort=FALSE) Error in as.vector(x, mode) : cannot coerce type 'closure' to vector of type 'any' It should work because: > all(rownames(x[order(rownames(x)),]) =+ rownames(y[order(rownames(y[,17, drop=FALSE])),17, drop=FALSE]) .... [TRUNCATED] [1] TRUE also: > class(x); class(y[,17, drop=FALSE]) [1] "matrix" [1] "matrix" Any idea why i cant use merge() in the normal way here? I'm forced to add the column using: temp.b <- cbind(x, y[match(rownames(x), rownames(y)),17]) All insights appreciated for this leaRner, cheers, Karl -- Karl Brand <k.brand at erasmusmc.nl> Department of Genetics Erasmus MC Dr Molewaterplein 50 3015 GE Rotterdam P +31 (0)10 704 3211 | F +31 (0)10 704 4743 | M +31 (0)642 777 268
Karl Brand
2010-Dec-02 10:22 UTC
[R] attempted merge() returns: cannot coerce type 'closure' to vector of type 'any'
Cheers Bill. You got me halfway, since: > temp <- merge(x=x, y=y[,17, drop=FALSE], by="rownames", sort=FALSE) Error in fix.by(by.x, x) : 'by' must specify valid column(s) but, using "row.names" instead of "rownames", like: > temp <- merge(x=x, y=y[,17, drop=FALSE], by="row.names", sort=FALSE) works (but adds a column "Row.names"). Which seems some what counter intuitive to me since i am feeding in two matrices to the merge function, which i understand have 'rownames', not 'row.names' as data frames have, right? Although the output of merge() is a data frame... thanks again, Karl On 12/1/2010 6:08 PM, William Dunlap wrote:> Try > by="rownames" > instead of > by=rownames > > Bill Dunlap > Spotfire, TIBCO Software > wdunlap tibco.com > >> -----Original Message----- >> From: r-help-bounces at r-project.org >> [mailto:r-help-bounces at r-project.org] On Behalf Of Karl Brand >> Sent: Wednesday, December 01, 2010 6:35 AM >> To: Dimitris Rizopoulos >> Cc: r-help at r-project.org >> Subject: [R] attempted merge() returns: cannot coerce type >> 'closure' to vector of type 'any' >> >> Hi Dimtris and esteemed useRs, >> >> I don't understand why i get this error message when >> attempting to use >> merge() - >> >> > temp<- merge(x, y[,17, drop=FALSE], by=rownames, sort=FALSE) >> Error in as.vector(x, mode) : >> cannot coerce type 'closure' to vector of type 'any' >> >> It should work because: >> >> > all(rownames(x[order(rownames(x)),]) =>> + rownames(y[order(rownames(y[,17, drop=FALSE])),17, >> drop=FALSE]) .... >> [TRUNCATED] >> [1] TRUE >> >> also: >> >> > class(x); class(y[,17, drop=FALSE]) >> [1] "matrix" >> [1] "matrix" >> >> >> Any idea why i cant use merge() in the normal way here? I'm forced to >> add the column using: >> >> temp.b<- cbind(x, y[match(rownames(x), rownames(y)),17]) >> >> All insights appreciated for this leaRner, >> >> cheers, >> >> Karl >> >> >> -- >> Karl Brand<k.brand at erasmusmc.nl> >> Department of Genetics >> Erasmus MC >> Dr Molewaterplein 50 >> 3015 GE Rotterdam >> P +31 (0)10 704 3211 | F +31 (0)10 704 4743 | M +31 (0)642 777 268 >> >> ______________________________________________ >> 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. >>-- Karl Brand <k.brand at erasmusmc.nl> Department of Genetics Erasmus MC Dr Molewaterplein 50 3015 GE Rotterdam P +31 (0)10 704 3211 | F +31 (0)10 704 4743 | M +31 (0)642 777 268