Função não reconhece variável extraída de um modelo!

Boa tarde senhores! Gostaria de saber como posso fazer uma função ler uma variável a partir de um modelo, nls por exemplo. Vamos supor um CMR. da <- expand.grid( A=factor( LETTERS[1: 3]), x=1:10) da$y <- 10/(1+exp(-( da$x-5)/1) )+rnorm(da$ x,0,0.1) n0 <- nls(y~As[A]/ (1+exp(-( x-x0[A])/ S[A])), data=da, start=list(As= c(10,10,10) , x0=c(5,5,5), S=c(1,1,1))) fun <- function(modelo){ mean(all.vars(summary(modelo)$formula)[1]) } Percebam que eu quero que a função calcule a média de uma variável, cuja variável foi declarada num determinado modelo. A função acima não dá certo, pois a função entende o seguinte: mean("VARIÁVEL") Para dar certo, eu acho, a variável não poderia estar entre aspas. Enfim, alguém tem alguma idéia de como eu posso fazer isso? Desde já agradeço a todos. (S,f,P) Allaman \begin{signature} <<>>= Prof. Dr. Ivan Bezerra Allaman Universidade Estadual de Santa Cruz Departamento de Ciências Exatas e Tecnológicas Ilhéus/BA - Brasil Fone: +55 73 3680-5076 E-mail: ivanalaman@yahoo.com.br/ivanalaman@gmail.com @ \end{signature}

Ivan, Dá pra fazer assim, embora eu acredito que exista um jeito mais simples, da <- expand.grid(A=factor(LETTERS[1:3]), x=1:10) da$y <- 10/(1+exp(-(da$x-5)/1))+rnorm(da$x,0,0.1) n0 <- nls(y~As[A]/(1+exp(-(x-x0[A])/S[A])), data=da, start=list(As=c(10,10,10), x0=c(5,5,5), S=c(1,1,1))) str(n0) n0$data eval(n0$data) all.vars(summary(n0)$formula)[1] eval(n0$data)[,all.vars(summary(n0)$formula)[1]] mean(eval(n0$data)[,all.vars(summary(n0)$formula)[1]]) fun <- function(n0){ mean(eval(n0$data)[,all.vars(summary(n0)$formula)[1]]) } fun(n0) À disposição. Walmes. ========================================================================== Walmes Marques Zeviani LEG (Laboratório de Estatística e Geoinformação, 25.450418 S, 49.231759 W) Departamento de Estatística - Universidade Federal do Paraná fone: (+55) 41 3361 3573 VoIP: (3361 3600) 1053 1173 e-mail: walmes@ufpr.br twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218 ==========================================================================

Valeu Walmes! O que importa é que resolveu! Obrigado de novo. (S,f,P) Allaman \begin{signature} <<>>= Prof. Dr. Ivan Bezerra Allaman Universidade Estadual de Santa Cruz Departamento de Ciências Exatas e Tecnológicas Ilhéus/BA - Brasil Fone: +55 73 3680-5076 E-mail: ivanalaman@yahoo.com.br/ivanalaman@gmail.com @ \end{signature} ________________________________ De: Walmes Zeviani <walmeszeviani@gmail.com> Para: r-br@listas.c3sl.ufpr.br; Ivan Bezerra Allaman <ivanalaman@yahoo.com.br> Enviadas: Quinta-feira, 29 de Setembro de 2011 15:12 Assunto: Re: [R-br] Função não reconhece variável extraída de um modelo! Ivan, Dá pra fazer assim, embora eu acredito que exista um jeito mais simples, da <- expand.grid(A=factor(LETTERS[1:3]), x=1:10) da$y <- 10/(1+exp(-(da$x-5)/1))+rnorm(da$x,0,0.1) n0 <- nls(y~As[A]/(1+exp(-(x-x0[A])/S[A])), data=da, start=list(As=c(10,10,10), x0=c(5,5,5), S=c(1,1,1))) str(n0) n0$data eval(n0$data) all.vars(summary(n0)$formula)[1] eval(n0$data)[,all.vars(summary(n0)$formula)[1]] mean(eval(n0$data)[,all.vars(summary(n0)$formula)[1]]) fun <- function(n0){ mean(eval(n0$data)[,all.vars(summary(n0)$formula)[1]]) } fun(n0) À disposição. Walmes. ========================================================================== Walmes Marques Zeviani LEG (Laboratório de Estatística e Geoinformação, 25.450418 S, 49.231759 W) Departamento de Estatística - Universidade Federal do Paraná fone: (+55) 41 3361 3573 VoIP: (3361 3600) 1053 1173 e-mail: walmes@ufpr.br twitter: @walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218 ==========================================================================

Ivan outra funcao que pode ajudar nisto é terms() combinada com eval() e outras voce pode ter flexibilidade de manuseio de termos em formulas Isto pode evitar por exemplo, copiar variaveis em objetos de saida e ao inves disto, apontar o objeto inicial exemplos: terms(y ~ x1 * x2) density ~ Asym/(1 + exp((xmid - log(conc))/scal)) a saida e uma lista com nomes fixos que voce pode entao explorar a estrutura On Thu, 29 Sep 2011, Ivan Bezerra Allaman wrote:
Boa tarde senhores!
Gostaria de saber como posso fazer uma função ler uma variável a partir de um modelo, nls por exemplo. Vamos supor um CMR.
da <- expand.grid( A=factor( LETTERS[1: 3]), x=1:10) da$y <- 10/(1+exp(-( da$x-5)/1) )+rnorm(da$ x,0,0.1)
n0 <- nls(y~As[A]/ (1+exp(-( x-x0[A])/ S[A])), data=da, start=list(As= c(10,10,10) , x0=c(5,5,5), S=c(1,1,1)))
fun <- function(modelo){ mean(all.vars(summary(modelo)$formula)[1]) }
Percebam que eu quero que a função calcule a média de uma variável, cuja variável foi declarada num determinado modelo. A função acima não dá certo, pois a função entende o seguinte:
mean("VARIÁVEL")
Para dar certo, eu acho, a variável não poderia estar entre aspas. Enfim, alguém tem alguma idéia de como eu posso fazer isso?
Desde já agradeço a todos.
(S,f,P) Allaman
\begin{signature}
<<>>=
Prof. Dr. Ivan Bezerra Allaman
Universidade Estadual de Santa Cruz
Departamento de Ciências Exatas e Tecnológicas
Ilhéus/BA - Brasil
Fone: +55 73 3680-5076
E-mail: ivanalaman@yahoo.com.br/ivanalaman@gmail.com
@
\end{signature}

Ótimo PJ!! Muito obrigado! Abraço! (S,f,P) Allaman \begin{signature} <<>>= Prof. Dr. Ivan Bezerra Allaman Universidade Estadual de Santa Cruz Departamento de Ciências Exatas e Tecnológicas Ilhéus/BA - Brasil Fone: +55 73 3680-5076 E-mail: ivanalaman@yahoo.com.br/ivanalaman@gmail.com @ \end{signature} ________________________________ De: Paulo Justiniano <paulojus@leg.ufpr.br> Para: R Brasil <r-br@listas.c3sl.ufpr.br>; Ivan Bezerra Allaman <ivanalaman@yahoo.com.br> Enviadas: Sexta-feira, 30 de Setembro de 2011 17:15 Assunto: Re: [R-br] Função não reconhece variável extraída de um modelo! Ivan outra funcao que pode ajudar nisto é terms() combinada com eval() e outras voce pode ter flexibilidade de manuseio de termos em formulas Isto pode evitar por exemplo, copiar variaveis em objetos de saida e ao inves disto, apontar o objeto inicial exemplos: terms(y ~ x1 * x2) density ~ Asym/(1 + exp((xmid - log(conc))/scal)) a saida e uma lista com nomes fixos que voce pode entao explorar a estrutura On Thu, 29 Sep 2011, Ivan Bezerra Allaman wrote:
Boa tarde senhores!
Gostaria de saber como posso fazer uma função ler uma variável a partir de um modelo, nls por exemplo. Vamos supor um CMR.
da <- expand.grid( A=factor( LETTERS[1: 3]), x=1:10) da$y <- 10/(1+exp(-( da$x-5)/1) )+rnorm(da$ x,0,0.1)
n0 <- nls(y~As[A]/ (1+exp(-( x-x0[A])/ S[A])), data=da, start=list(As= c(10,10,10) , x0=c(5,5,5), S=c(1,1,1)))
fun <- function(modelo){ mean(all.vars(summary(modelo)$formula)[1]) }
Percebam que eu quero que a função calcule a média de uma variável, cuja variável foi declarada num determinado modelo. A função acima não dá certo, pois a função entende o seguinte:
mean("VARIÁVEL")
Para dar certo, eu acho, a variável não poderia estar entre aspas. Enfim, alguém tem alguma idéia de como eu posso fazer isso?
Desde já agradeço a todos.
(S,f,P) Allaman
\begin{signature}
<<>>=
Prof. Dr. Ivan Bezerra Allaman
Universidade Estadual de Santa Cruz
Departamento de Ciências Exatas e Tecnológicas
Ilhéus/BA - Brasil
Fone: +55 73 3680-5076
E-mail: ivanalaman@yahoo.com.br/ivanalaman@gmail.com
@
\end{signature}
participantes (3)
-
Ivan Bezerra Allaman
-
Paulo Justiniano
-
Walmes Zeviani