[R] error message when using outer function
Petr Klasterecky
klaster at karlin.mff.cuni.cz
Mon Mar 5 21:25:36 CET 2007
Comments inside.
Reinman, Grant napsal(a):
> Dear R-users,
> I have two sets of code that appear to me to be equivalent, shown below, and
> yet I get the error message
>
> "Error in dim(robj) <- c(dX, dY) : dim<- : dims [product 4] do not match the
> length of object [1]"
>
> after executing the assignment to logdens2. Both functions post.a1 and
> post.a2 return the same values when run alone and not embedded in the
> function outer. I would appreciate help in understanding the differences
> between these two sets of code.
>
> The code in post.a1 is from Gelman, Carlin, Stern, and Rubin's Bayesian Data
> Analysis solutions, problem 3.5. I was trying to modify this code in
> post.a2 when I ran into this error.
>
>
> post.a1 <- function(mu,sd,y){
> ldens <- 0
> for (i in 1:length(y)) ldens <- ldens + log(dnorm(y[i],mu,sd))
> ldens}
> y <- c(10,10,12,11,9)
> mugrid <- c(10,11)
> sdgrid <- c(1,1.2)
> logdens1 <- outer (mugrid, sdgrid, post.a1, y)
> #*** no error messages ***
Actually pretty ugly coding (for a textbook) in my opinion... Try what
you get with
y <- c(10,10,12,11,9)
mugrid <- c(10,11)
sdgrid <- c(1,1.2)
log(dnorm(y[1],mean=mugrid,sd=sdgrid))
[1] -0.9189385 -1.4484823
This is in a perfect accordance with help(dnorm), which says you are
allowed to specify a vector of means and SDs. Here 2 values were
specified, so you obtain 2 density values.
Now, adding a vector of length 2 to a constant:
#not run here# ldens <- ldens + log(dnorm(y[i],mu,sd))
is again a vector of length 2.
However, using sum() in your code below gives you just a single number
and R starts complaining because the dimensions don't match.
Petr
>
>
> post.a2 <- function(mu,sd,y)
> {
> ldens <- sum(log(dnorm(y,mu,sd)))
> ldens
> }
> y <- c(10,10,12,11,9)
> mugrid <- c(10,11)
> sdgrid <- c(1,1.2)
> logdens2 <- outer (mugrid, sdgrid, post.a2, y)
> #***error message occurs here ***
>
> Thank You!
>
> Grant Reinman
> e-mail:grant.reinman at pw.utc.com
>
> ______________________________________________
> R-help at stat.math.ethz.ch 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.
>
--
Petr Klasterecky
Dept. of Probability and Statistics
Charles University in Prague
Czech Republic
More information about the R-help
mailing list