[R-br] parâmetro com variavel não definida
Waldelene Moura
waldelene em yahoo.com.br
Quinta Junho 5 12:59:04 BRT 2014
A tem formatos diferentes, então terei que usar a gambiarra mesmo, rsrsrs.
Valeu, obrigada Rodrigo.
Waldelene Moura
Analista de Sistemas
Universidade Federal do Maranhão - PROEN
Em Quinta-feira, 5 de Junho de 2014 12:36, Rodrigo Coster <rcoster em gmail.com> escreveu:
Da para fazer assim:
calcula_matriz <- function (A = rbind(c( p + 8, 3), c( 5, p - 1)), limite) {
>for (p in 1:limite ) {
>print(A)
>}
>}
>calcula_matriz(limite = 1)
Mas se A tiver sempre o mesmo formato, não precisa ser parâmetro:
calcula_matriz <- function (limite) {
>for (p in 1:limite ) {
>print (rbind(c( p + 8, 3), c( 5, p - 1)))
>}
>}
>
>
>calcula_matriz(limite = 1)
Ainda, se A tiver vários formatos diferentes, da para usar uma gambiarra:
calcula_matriz <- function (A = 'rbind(c( p + 8, 3), c( 5, p - 1))', limite) {
>for (p in 1:limite ) {
>print(eval(parse(text=A)))
>}
>}
>calcula_matriz(limite = 1)
Note que agora A é texto (ta entre aspas), e não mais uma expressão do R. Assim tu pode fazer:
calcula_matriz(A = 'rbind(c(p, 1/p), c(p ^ 2, log(p)))', limite = 1)
2014-06-05 12:26 GMT-03:00 Waldelene Moura <waldelene em yahoo.com.br>:
Oi Rodrigo entendi um pouco o que voce disse, mas nao consegui juntar com a construção da minha matriz, ja que é ela o parâmetro da função.
>
>
> Estou fazendo umas funções no meu mestrado na area de controle em que preciso passar matrizes com incertezas politópicas, como parametros,, no caso as incertezas é a variável p, entro tambem com a variação dessas incertezas np exemplo abaixo chamei de limite,,,
>
>
>vou detalhar um pouco mais uma função bem modesta para voce me ajudar e dizer onde posso aproveitar sua sugestão.
>
>
>
>
>----- programa principal -----------------------------------------
>
>
>limite = 3 # da o limite de p , no caso p vai variar de 1 a 4 (verifique que eu não defini a variável p)
>A = rbind ( c( p + 8 , 3),
> c( 5 , p - 1)
>
>
>calcula_matriz(A, limite) # chamada da função
>
>
>------ agora a funcão --------
>
>
>calcula_matriz <- function (A, limite) {
> for ( p in 1 : limite ) { # só aqui definir p
> print (A)
> }
>}
>
>
>------------------------------------------------------------------
>O resultado seria:
>
>
>para p = 1 A = [9 3; 5 0]
>para p = 2 A = [10 3; 5 1]
>para p = 3 A = [11 3; 5 2]
>
>
>agradeço a quem puder ajudar,
>
>Waldelene Moura
>Analista de Sistemas
>Universidade Federal do Maranhão - PROEN
>
>
>
>
>
>Em Quinta-feira, 5 de Junho de 2014 11:39, Rodrigo Coster <rcoster em gmail.com> escreveu:
>
>
>
>
>Waldelene,
>
>
>O que da pra fazer é definir o valor do parâmetro como padrão. Por exemplo:
>
>
>calcular_matrizes <- function(x = p + 2) {
>p <- rnorm(1)
>return(x)
>}
>calcular_matrizes()
>
>
>
>Ele só vai executar o 'x = p + 2' quando a variável x for chamada, que ocorre somente depois de definir o valor de p.
>
>
>
>
>
>2014-06-05 11:27 GMT-03:00 Waldelene Moura <waldelene em yahoo.com.br>:
>
>
>>
>>Olá pessoal, se alguem puder me ajudar nesse problema agradeço.
>>
>>
>>É o seguinte
>>
>>
>>Preciso passar como parâmetro de uma função uma matriz que possui nos seus
>>elementos uma variável p, sendo que essa variável p só vai assumir valores dentro da função
>>chamada, exemplo,
>>
>>
>>
>>
>>A = cbind(c(p+5, 6),
>> c(10, p+8))
>>
>>
>>calcular_matrizes (A)
>>
>>
>>
>>
>>dentro da função calcular_matrizes tenho que achar valores para essa matriz para varios valores de p
>>
>>
>>A pergunta é, como passar esse parâmetro, no caso a matriz A na função, sem dar erro de que a variável p não foi definida? (object 'p' not found).
>>
>>Waldelene Moura
>>Analista de Sistemas
>>Universidade Federal do Maranhão - PROEN
>>
>>
>>_______________________________________________
>>R-br mailing list
>>R-br em listas.c3sl.ufpr.br
>>https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>>Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
>>
>
>
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20140605/854fd931/attachment.html>
Mais detalhes sobre a lista de discussão R-br