Criar função utilizando "for"

Caros membros da lista, Me desculpem a ignorância, porém sou novo como usuário e estou tentando criar uma função para facilitar uma operação no meu banco de dados. considerem o exemplo: dados = as.data.frame(matrix(rnorm(200), ncol=10, nrow=50)) cor.multipla <- function(x, y){ n <- ncol(y) cor.mult <- numeric(0) + for(i in 1:n){cor.mult<- cor.test(x, y[,i]) + return(cor.mult$p.value)} } cor.multipla(dados$V1, dados[2:10]) Nesta função, eu gostaria fazer a correlação da coluna 1 com as colunas de 2 a 10, e extrair um vetor de p.value para cada correlação, no entanto, a função está me retornando apenas um valor de p.value. Alguém poderia me dizer onde eu estou errando ou mesmo se estou indo pelo caminho errado? Desde já agradeço... -- *Rodrigo A. Muniz* Eng. Agrônomo. Ms Produção Vegetal (UENF) Doutorando em Engenharia de Sistemas Agrícolas (ESALQ/USP) Cel (19) 8300-4333 (Pessoal) Tel (19) 3375-1196 (Residêncial) Tel (19) 3447-8537 (Trabalho)

O seu loop for tá sobre escrevendo resultados em cor.mult<- cor.test(x, y[,i]) e portanto somente o ultimo está sendo guardado (note tb que sua matrz de dados esá reciclando valores) Uma sugestão: x <- 1:10 y <- matrix(rnorm(200), nrow=10) apply(y, 2, function(y, x=x) cor.test(x,y)$p.value On Mon, 24 Mar 2014, Rodrigo Muniz wrote:
Caros membros da lista, Me desculpem a ignorância, porém sou novo como usuário e estou tentando criar uma função para facilitar uma operação no meu banco de dados. considerem o exemplo:
dados = as.data.frame(matrix(rnorm(200), ncol=10, nrow=50)) cor.multipla <- function(x, y){ n <- ncol(y) cor.mult <- numeric(0) + for(i in 1:n){cor.mult<- cor.test(x, y[,i]) + return(cor.mult$p.value)} }
cor.multipla(dados$V1, dados[2:10])
Nesta função, eu gostaria fazer a correlação da coluna 1 com as colunas de 2 a 10, e extrair um vetor de p.value para cada correlação, no entanto, a função está me retornando apenas um valor de p.value. Alguém poderia me dizer onde eu estou errando ou mesmo se estou indo pelo caminho errado? Desde já agradeço... -- Rodrigo A. MunizEng. Agrônomo. Ms Produção Vegetal (UENF) Doutorando em Engenharia de Sistemas Agrícolas (ESALQ/USP) Cel (19) 8300-4333 (Pessoal) Tel (19) 3375-1196 (Residêncial) Tel (19) 3447-8537 (Trabalho)

Este código não funciona. O seu loop for tá sobre escrevendo resultados em cor.mult<- cor.test(x, y[,i]) e portanto somente o ultimo está sendo guardado (note tb que sua matrz de dados esá reciclando valores) Uma sugestão: x <- 1:10 y <- matrix(rnorm(200), nrow=10) apply(y, 2, function(y, x=x) cor.test(x,y)$p.value

Rodrigo, tem uma rotina no pacote Hmisc que talvez possa te ajudar. require(Hmisc) ?rcorr x <- c(-2, -1, 0, 1, 2) y <- c(4, 1, 0, 1, 4) z <- c(1, 2, 3, 4, NA) v <- c(1, 2, 3, 4, 5) rcorr(cbind(x,y,z,v)) [ ]'s. Edson Lira Estatístico Manaus-Amazonas Em Segunda-feira, 24 de Março de 2014 23:04, Mauro Sznelwar <sznelwar@uol.com.br> escreveu: Este código não funciona. O seu loop for tá sobre escrevendo resultados em cor.mult<- cor.test(x, y[,i]) e portanto somente o ultimo está sendo guardado (note tb que sua matrz de dados esá reciclando valores) Uma sugestão: x <- 1:10 y <- matrix(rnorm(200), nrow=10) apply(y, 2, function(y, x=x) cor.test(x,y)$p.value _______________________________________________ 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.

De fato, faltou fechar o parentesis na ultima linha. Bem percebido!!!!
Em Segunda-feira, 24 de Março de 2014 23:04, Mauro Sznelwar <sznelwar@uol.com.br> escreveu: Este código não funciona. O seu loop for tá sobre escrevendo resultados em cor.mult<- cor.test(x, y[,i]) e portanto somente o ultimo está sendo guardado
(note tb que sua matrz de dados esá reciclando valores)
Uma sugestão:
x <- 1:10 y <- matrix(rnorm(200), nrow=10) apply(y, 2, function(y, x=x) cor.test(x,y)$p.value
_______________________________________________ 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.

Resolvido. Obrigados a todos que contribuíram para a resolução deste problema. Att... 2014-03-25 13:49 GMT-03:00 Paulo Justiniano <paulojus@leg.ufpr.br>:
De fato, faltou fechar o parentesis na ultima linha. Bem percebido!!!!
Em Segunda-feira, 24 de Março de 2014 23:04, Mauro Sznelwar < sznelwar@uol.com.br> escreveu: Este código não funciona.
O seu loop for tá sobre escrevendo resultados em cor.mult<- cor.test(x, y[,i]) e portanto somente o ultimo está sendo guardado
(note tb que sua matrz de dados esá reciclando valores)
Uma sugestão:
x <- 1:10 y <- matrix(rnorm(200), nrow=10) apply(y, 2, function(y, x=x) cor.test(x,y)$p.value
_______________________________________________ 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.
_______________________________________________ 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.
-- *Rodrigo A. Muniz* Eng. Agrônomo. Ms Produção Vegetal (UENF) Doutorando em Engenharia de Sistemas Agrícolas (ESALQ/USP) Cel (19) 8300-4333 (Pessoal) Tel (19) 3375-1196 (Residêncial) Tel (19) 3447-8537 (Trabalho)
participantes (4)
-
Edson Lira
-
Mauro Sznelwar
-
Paulo Justiniano
-
Rodrigo Muniz