[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