[R-br] Ajuda: duvida passando uma string como modelo para uma função

Henrique Dallazuanna wwwhsd em gmail.com
Domingo Abril 17 15:02:35 BRT 2011


Se deseja avaliar uma string, pode usar o parse combinado com o eval:

mF <- function(x=seq(1, 5, by=1),
              y=seq(0, 10, by=5),
              z='2 - 0.4*y - 0.5*x + 0.8*sqrt(x)')
{
 z <- outer(x, y, function(x, y) eval(parse(text = z)))
 z
}

2011/4/17 Jose Claudio Faria <joseclaudio.faria em gmail.com>:
> Walmes,
> (Vou repetir a mensagem pq ficou desalinhado o código!)
>
> Embora ache que essa função ainda possa ser melhorada, sua ajuda foi valiosa!
>
> Sua sugestão pode ser mais simples, e próximo do que realmente estou
> precisando, veja:
>
> mF <- function(x=seq(1, 5, by=1),
>               y=seq(0, 10, by=5),
>               model){
>  z <- outer(x, y,
>             function(x, y){
>               eval(model)
>             })
>  z
> }
>
> mF(model=quote(2 - 0.4*y - 0.5*x + 0.8*sqrt(x)))
>
>> mF(model=quote(2 - 0.4*y - 0.5*x + 0.8*sqrt(x)))
>         [,1]       [,2]      [,3]
> [1,] 2.300000  0.3000000 -1.700000
> [2,] 2.131371  0.1313708 -1.868629
> [3,] 1.885641 -0.1143594 -2.114359
> [4,] 1.600000 -0.4000000 -2.400000
> [5,] 1.288854 -0.7111456 -2.711146
>
> Talvez na segunda-feira outras pessoas possam dar alguma contribuição...
>
> Abs e muito obrigado!
> --
> ///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\
> Jose Claudio Faria
> Estatistica - prof. Titular
> UESC/DCET/Brasil
> joseclaudio.faria em gmail.com
> ///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\
>
>
>
> --
> ///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\
> Jose Claudio Faria
> Estatistica - prof. Titular
> UESC/DCET/Brasil
> joseclaudio.faria em gmail.com
> ///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>



-- 
Henrique Dallazuanna
Curitiba-Paraná-Brasil
25° 25' 40" S 49° 16' 22" O


Mais detalhes sobre a lista de discussão R-br