Otra alternativa es usar vectorizacion:

# funciones
h <- function(x) x^(0:3)   # nota el cambio
B <- c(1,2,1,3)
hB <- function(x) sum(h(x) * B)   # nota el cambio
hB <- Vectorize(hB)   # con esto, x puede ser un vector
hB(1)
hB(2)
hB(c(1,2))  # vector

# grafico
y1 <- seq(-2,2,0.01)
plot(y1, hB(y1), type = 'l', las = 1)

Saludos,
Jorge.-



2013/2/28 Carlos Ortega <>

> Hola,
>
> La traspuesta en la función hB la tienes que aplicar sobre "B", si no no
> puedes multiplicar los dos vectores/matrices.
> Y luego antes de hacer el plot, tienes que revisar las dimensiones de tanto
> y1 y del resultado hB(y1) porque no son iguales y la función plot te dará
> un nuevo error...
>
> Mira el código:
>
> > h<-function(x) matrix(c(1,x,x^2,x^3), ncol=1)
> > B=matrix(c(1,2,1,3),ncol=1)
> > hB<-function(x){(h(x))%*%*t*(B)}
> > y1=seq(-2,2,0.01)
> > y2 <- hB(y1)
> >
> > length(y1)
> [1] *401*
> > dim(y2)
> [1] *1204*    4
>
> > plot(y1, y2)
> Error en xy.coords(x, y, xlabel, ylabel, log) :
>   'x' and 'y' lengths differ
>
>
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>
>
>
> El 28 de febrero de 2013 04:44, Marcuzzi, Javier Ruben <
> > escribió:
>
> > Estimada Irma Zavala
> >
> > Yo tengo los datos en un data.frame, y desde este grafico. Es mi forma,
> > de pronto bastante básica pero de esa forma tengo resutlados.
> >
> > Sin embargo es posible graficar matrices, hay un ejemplo en:
> > http://www.phaget4.org/R/image_matrix.html
> >
> > Javier Marcuzzi
> >
> > On mié, 2013-02-27 at 21:32 -0600, Irma Zavala wrote:
> > > r-help-es@r-project.org
> > >
> > > Hola!!
> > >
> > > Estoy trabajando con una funcin del tipo h(x)'B, donde h(x) es un
> vector
> > > columna  de q entradas, de igual manera B es un vector columna de
> > dimensin
> > > q.
> > >
> > > Quiero graficar h(x)'B para alguna h(x), por ejemplo
> > >
> > >
> > >
> > > h<-function(x) matrix(c(1,x,x^2,x^3), ncol=1)
> > >
> > > B es un vector columna fijo
> > >
> > > B=matrix(c(1,2,1,3),ncol=1)
> > >
> > >
> > >
> > > Para graficar la funcin h(x)'B lo que hago es hacer una funcin nueva
> > >
> > > hB<-function(x){t(h(x))%*%B}
> > >
> > > para valores particulares de x la funcin hace lo que busco
> > >
> > >
> > > > h<-function(x) matrix(c(1,x,x^2,x^3), ncol=1)
> > >
> > > > B=matrix(c(1,2,1,3),ncol=1)
> > >
> > > > hB<-function(x){t(h(x))%*%B}
> > >
> > > > hB(1)
> > >
> > >      [,1]
> > >
> > > [1,]    7
> > >
> > > > hB(2)
> > >
> > >      [,1]
> > >
> > > [1,]   33
> > >
> > > Sin embargo cuando intento graficar, me marca un error
> > >
> > > > y1=seq(-2,2,0.01)
> > >
> > > > plot(y1,hB(y1))
> > >
> > > Error in t(h(x)) %*% B : non-conformable arguments
> > >
> > > Entiendo que primero evala en la funcin h y despus multiplica por B y
> > > por ende hay un error en las dimensiones. Pero no se que hacer para que
> > la
> > > funcin se evale entrada por entrada del vector y1, creo que usar alguna
> > > forma vectorizada ayudara, pero no se como hacerlo.
> > >
> > > Ayuda por favor :)
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > > _______________________________________________
> > > R-help-es mailing list
> > > R-help-es@r-project.org
> > > https://stat.ethz.ch/mailman/listinfo/r-help-es
> >
> > _______________________________________________
> > R-help-es mailing list
> > R-help-es@r-project.org
> > https://stat.ethz.ch/mailman/listinfo/r-help-es
> >
>
>
>
> --
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>
>         [[alternative HTML version deleted]]
>
>
> _______________________________________________
> R-help-es mailing list
> R-help-es@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
>

	[[alternative HTML version deleted]]

