Hi, I got the following message in R: Error in as.function.default(pdfs[1]) : invalid body argument for "function" Should NEVER happen; please bug.report() [mkCLOSXP] Operating System: Windows XP (SP2) R version: R-2.0.1 Code causing error follows: # create two probability density functions for mixtures of normal distibutions fmix1 <- function(x) {dnorm(x, mean=4, sd=2) * 0.5 + dnorm(x, mean=7, sd=1) * 0.5} fmix2 <- function(x) {dnorm(x, mean=3, sd=1) * 0.4 + dnorm(x, mean=6, sd=2) * 0.6} # put them together pdfs <- c(fmix1, fmix2) # perhaps this is not as it was intended but it leads to the bug.report message as.function(pdfs[1]) Meanwhile I solved this problem otherwise. Hope this helps. Timo
On Thu, 24 Feb 2005 15:59:13 +0100 (CET), becker@kfs.oeaw.ac.at wrote :>Hi, > >I got the following message in R: >Error in as.function.default(pdfs[1]) : invalid body argument for "function" >Should NEVER happen; please bug.report() [mkCLOSXP]A simpler version is as follows:> x1 <- list(function() 1) > x1[[1]] function() 1> as.function(x1)Error in as.function.default(x1) : invalid body argument for "function" Should NEVER happen; please bug.report() [mkCLOSXP] The problem is that as.function doesn't know how to handle an object of mode function as the body of a function. It expects a function definition to be a call instead:> x2 <- as.list(function() function() 1) > x2[[1]] function() 1> as.function(x2) # no problem this timefunction () function() 1> mode(x1)[1] "list"> mode(x1[[1]])[1] "function"> mode(x2)[1] "list"> mode(x2[[1]]) # notice the difference from x1[[1]][1] "call" These tests were done in>platform i386-pc-mingw32 >arch i386 >os mingw32 >system i386, mingw32 >status Under development (unstable) >major 2 >minor 1.0 >year 2005 >month 02 >day 24 >language RCould someone else please deal with this? I have trouble with test builds right now. Duncan Murdoch
becker@kfs.oeaw.ac.at writes:> Hi, > > I got the following message in R: > Error in as.function.default(pdfs[1]) : invalid body argument for "function" > Should NEVER happen; please bug.report() [mkCLOSXP]Actually, I think that the only bug here is in the error message (which presumably predates as.function()). If you can perform arbitrary voodo and try to convert it into a function, then of course you can also end up with an invalid body.> Operating System: Windows XP (SP2) > R version: R-2.0.1 > Code causing error follows: > > # create two probability density functions for mixtures of normal > distibutions > fmix1 <- function(x) {dnorm(x, mean=4, sd=2) * 0.5 + dnorm(x, mean=7, > sd=1) * 0.5} > fmix2 <- function(x) {dnorm(x, mean=3, sd=1) * 0.4 + dnorm(x, mean=6, > sd=2) * 0.6} > > # put them together > pdfs <- c(fmix1, fmix2) > > # perhaps this is not as it was intended but it leads to the bug.report > message > as.function(pdfs[1]) > > Meanwhile I solved this problem otherwise. > Hope this helps. > Timo > > ______________________________________________ > R-devel@stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel >-- O__ ---- Peter Dalgaard Blegdamsvej 3 c/ /'_ --- Dept. of Biostatistics 2200 Cph. N (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - (p.dalgaard@biostat.ku.dk) FAX: (+45) 35327907