Usando o nome da coluna dentro do apply

Caros membros da lista R-br, gostaria de uma ajuda em relação a situação a seguir. Gostaria de aplicar certa função as colunas de uma matriz, sendo que entre outras coisas, a função que desejo deve gravar arquivos csv com os dados. Entretanto, preciso de um arquivo apra cada coluna, e não estou conseguindo transferir o nome (ou número da coluna) dentro da função apply. Um código exemplo está abaixo: dados = replicate(100,rnorm(50)) funcao = function(coluna){ y = coluna x = 2*coluna tabela = data.frame(x,y) nome1 = colnames(coluna) nome2 = names(coluna) #write.csv("tabela_?NOMEDACOLUNA?.csv") saida = list(nome1,nome2,x,y) return(saida) } resultados = apply(dados,2,funcao) O problema está em como passar o nome da coluna, pois tanto o "names" e o "colnames" retornam NULL. Eu sei que se o objetivo fosse somente o de criar estes vários arquivos poderia usar "eval" e "paste", mas a função que quero aplicar é muito mais complexa que esta. O objetivo de criar os arquivos csv é poder tirar alguns objetos da saída da minha função e assim economizar memória RAM. Tais objetos não são primordias para mim mas gostaria de salvá-los. Muito obrigada, Vanessa B Leotti Torman UFRGS

Vanessa, se sei se é esse o problemas, mas sua matriz parece estar sem nome, por isso esta retornando o NULL quando a matriz tem nome nas colunas o colnames funciona: dados = replicate(100,rnorm(50)) ## Colocando os nomes dimnames(dados)[[2]] <- paste('X',1:100,sep='') head(dados) colnames(dados) dimnames(dados)[[2]] funcao = function(coluna){ y = coluna x = 2*coluna tabela = data.frame(x,y) nome1 = colnames(coluna) nome2 = names(coluna) #write.csv(FILE,paste(nome1,'.csv',sep='')) saida = list(nome1,nome2,x,y) return(saida) } resultados = apply(dados,2,funcao) Acho que pode ser isso... Éder Em 6 de fevereiro de 2012 16:12, Vanessa Leotti Torman <vleotti@yahoo.com.br> escreveu:
Caros membros da lista R-br,
gostaria de uma ajuda em relação a situação a seguir. Gostaria de aplicar certa função as colunas de uma matriz, sendo que entre outras coisas, a função que desejo deve gravar arquivos csv com os dados. Entretanto, preciso de um arquivo apra cada coluna, e não estou conseguindo transferir o nome (ou número da coluna) dentro da função apply.
Um código exemplo está abaixo:
dados = replicate(100,rnorm(50))
funcao = function(coluna){ y = coluna x = 2*coluna tabela = data.frame(x,y) nome1 = colnames(coluna) nome2 = names(coluna) #write.csv("tabela_?NOMEDACOLUNA?.csv") saida = list(nome1,nome2,x,y) return(saida) }
resultados = apply(dados,2,funcao)
O problema está em como passar o nome da coluna, pois tanto o "names" e o "colnames" retornam NULL.
Eu sei que se o objetivo fosse somente o de criar estes vários arquivos poderia usar "eval" e "paste", mas a função que quero aplicar é muito mais complexa que esta. O objetivo de criar os arquivos csv é poder tirar alguns objetos da saída da minha função e assim economizar memória RAM. Tais objetos não são primordias para mim mas gostaria de salvá-los.
Muito obrigada, Vanessa B Leotti Torman UFRGS
_______________________________________________ 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.

O que Eder falou. Mas mesmo assim não daria certo. O jeito mais fácil, mas é um "copout" é usar um loop. Ou se quiser mesmo apply: apply(names(dados),2,funcao) modificando a funcao para pegar o nome da coluna e extrair de 'dados'. 2012/2/6 Eder David Borges da Silva <eder@leg.ufpr.br>
Vanessa, se sei se é esse o problemas, mas sua matriz parece estar sem nome, por isso esta retornando o NULL quando a matriz tem nome nas colunas o colnames funciona:
dados = replicate(100,rnorm(50)) ## Colocando os nomes dimnames(dados)[[2]] <- paste('X',1:100,sep='') head(dados) colnames(dados)
dimnames(dados)[[2]]
funcao = function(coluna){ y = coluna x = 2*coluna tabela = data.frame(x,y) nome1 = colnames(coluna) nome2 = names(coluna) #write.csv(FILE,paste(nome1,'.csv',sep='')) saida = list(nome1,nome2,x,y) return(saida) }
resultados = apply(dados,2,funcao)
Acho que pode ser isso... Éder
Em 6 de fevereiro de 2012 16:12, Vanessa Leotti Torman <vleotti@yahoo.com.br> escreveu:
Caros membros da lista R-br,
gostaria de uma ajuda em relação a situação a seguir. Gostaria de aplicar certa função as colunas de uma matriz, sendo que entre outras coisas, a função que desejo deve gravar arquivos csv com os dados. Entretanto, preciso de um arquivo apra cada coluna, e não estou conseguindo transferir o nome (ou número da coluna) dentro da função apply.
Um código exemplo está abaixo:
dados = replicate(100,rnorm(50))
funcao = function(coluna){ y = coluna x = 2*coluna tabela = data.frame(x,y) nome1 = colnames(coluna) nome2 = names(coluna) #write.csv("tabela_?NOMEDACOLUNA?.csv") saida = list(nome1,nome2,x,y) return(saida) }
resultados = apply(dados,2,funcao)
O problema está em como passar o nome da coluna, pois tanto o "names" e o "colnames" retornam NULL.
Eu sei que se o objetivo fosse somente o de criar estes vários arquivos poderia usar "eval" e "paste", mas a função que quero aplicar é muito mais complexa que esta. O objetivo de criar os arquivos csv é poder tirar alguns objetos da saída da minha função e assim economizar memória RAM. Tais objetos não são primordias para mim mas gostaria de salvá-los.
Muito obrigada, Vanessa B Leotti Torman UFRGS
_______________________________________________ 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.

Obrigada Eduardo! É isso aí. Abraços, Vanessa ________________________________ De: Eduardo Leoni <e.leoni@gmail.com> Para: r-br@listas.c3sl.ufpr.br Enviadas: Terça-feira, 7 de Fevereiro de 2012 15:13 Assunto: Re: [R-br] Usando o nome da coluna dentro do apply O que Eder falou. Mas mesmo assim não daria certo. O jeito mais fácil, mas é um "copout" é usar um loop. Ou se quiser mesmo apply: apply(names(dados),2,funcao) modificando a funcao para pegar o nome da coluna e extrair de 'dados'. 2012/2/6 Eder David Borges da Silva <eder@leg.ufpr.br> Vanessa,
se sei se é esse o problemas, mas sua matriz parece estar sem nome, por isso esta retornando o NULL quando a matriz tem nome nas colunas o colnames funciona:
dados = replicate(100,rnorm(50)) ## Colocando os nomes dimnames(dados)[[2]] <- paste('X',1:100,sep='') head(dados) colnames(dados)
dimnames(dados)[[2]]
funcao = function(coluna){ y = coluna x = 2*coluna tabela = data.frame(x,y) nome1 = colnames(coluna) nome2 = names(coluna)
#write.csv(FILE,paste(nome1,'.csv',sep=''))
saida = list(nome1,nome2,x,y) return(saida) }
resultados = apply(dados,2,funcao)
Acho que pode ser isso... Éder
Em 6 de fevereiro de 2012 16:12, Vanessa Leotti Torman <vleotti@yahoo.com.br> escreveu:
Caros membros da lista R-br,
gostaria de uma ajuda em relação a situação a seguir. Gostaria de aplicar certa função as colunas de uma matriz, sendo que entre outras coisas, a função que desejo deve gravar arquivos csv com os dados. Entretanto, preciso de um arquivo apra cada coluna, e não estou conseguindo transferir o nome (ou número da coluna) dentro da função apply.
Um código exemplo está abaixo:
dados = replicate(100,rnorm(50))
funcao = function(coluna){ y = coluna x = 2*coluna tabela = data.frame(x,y) nome1 = colnames(coluna) nome2 = names(coluna) #write.csv("tabela_?NOMEDACOLUNA?.csv") saida = list(nome1,nome2,x,y) return(saida) }
resultados = apply(dados,2,funcao)
O problema está em como passar o nome da coluna, pois tanto o "names" e o "colnames" retornam NULL.
Eu sei que se o objetivo fosse somente o de criar estes vários arquivos poderia usar "eval" e "paste", mas a função que quero aplicar é muito mais complexa que esta. O objetivo de criar os arquivos csv é poder tirar alguns objetos da saída da minha função e assim economizar memória RAM. Tais objetos não são primordias para mim mas gostaria de salvá-los.
Muito obrigada, Vanessa B Leotti Torman UFRGS
_______________________________________________ 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.
_______________________________________________ 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 (3)
-
Eder David Borges da Silva
-
Eduardo Leoni
-
Vanessa Leotti Torman