parâmetro com variavel não definida

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

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@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@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.

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@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@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@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.

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@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@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@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@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.

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@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@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@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@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@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.
participantes (2)
-
Rodrigo Coster
-
Waldelene Moura