Ajuda: duvida passando uma string como modelo para uma função

Pessoal, Gostaria de passar uma string como modelo para uma função, e não estou conseguindo. (Acho que já estou ficando velho...) De uma forma primitiva consigo: mF <- function(x=seq(1, 5, by=1), y=seq(0, 10, by=5), z=function(x, y) 2 - 0.4*y - 0.5*x + 0.8*sqrt(x)) { z <- outer(x, y, z) z }
mF() [,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
Mas o que preciso (para automatizar um tanto de coisas é algo assim): 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) DUVIDA) z } com o mesmo resultado anterior. Alguma dica? Abs, -- ///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\ Jose Claudio Faria Estatistica - prof. Titular UESC/DCET/Brasil joseclaudio.faria@gmail.com ///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\

JC Faria, Dando um bizu rápido, achei a função tutoR::eval.string(), link de documentação abaixo. http://finzi.psych.upenn.edu/R/library/tutoR/html/eval.string.html Pelos exemplos acredito que ela possa resolver. Da mesma forma ainda acredito que com os pacotes básicos do R você também consiga. Vou fazer tentativas. À 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 ========================================================================== Em 17 de abril de 2011 08:09, Jose Claudio Faria < joseclaudio.faria@gmail.com> escreveu:
Pessoal,
Gostaria de passar uma string como modelo para uma função, e não estou conseguindo. (Acho que já estou ficando velho...)
De uma forma primitiva consigo:
mF <- function(x=seq(1, 5, by=1), y=seq(0, 10, by=5), z=function(x, y) 2 - 0.4*y - 0.5*x + 0.8*sqrt(x)) { z <- outer(x, y, z) z }
mF() [,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
Mas o que preciso (para automatizar um tanto de coisas é algo assim): 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) DUVIDA) z }
com o mesmo resultado anterior.
Alguma dica?
Abs, -- ///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\ Jose Claudio Faria Estatistica - prof. Titular UESC/DCET/Brasil joseclaudio.faria@gmail.com ///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\ _______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

JC Faria, Uma opção seria passar a fórmula a ser avaliada dentro do quote() e não como string. Veja > mF <- function(x=seq(1, 5, by=1), + y=seq(0, 10, by=5), + z=*quote*(2 - 0.4*y - 0.5*x + 0.8*sqrt(x))){ + z <- outer(x, y, + function(x, y){ + x <- x; y <- y + *eval*(z) + } + ) + z + } > mF() [,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 > Para usar a string teriamos que arrumar um jeito de converter string (entrada) para language (saída do quote()). À 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 ==========================================================================
participantes (2)
-
Jose Claudio Faria
-
Walmes Zeviani