[R-br] Usando o nome da coluna dentro do apply
Eduardo Leoni
e.leoni em gmail.com
Terça Fevereiro 7 15:13:00 BRST 2012
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 em 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 em 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 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.
> _______________________________________________
> 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/20120207/fc7711f3/attachment.html>
Mais detalhes sobre a lista de discussão R-br