[R-br] Usando o nome da coluna dentro do apply

Vanessa Leotti Torman vleotti em yahoo.com.br
Quinta Fevereiro 9 17:11:03 BRST 2012


Obrigada Eduardo! É isso aí.

Abraços,
Vanessa



________________________________
 De: Eduardo Leoni <e.leoni em gmail.com>
Para: r-br em 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 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.
>

_______________________________________________
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/20120209/37137d5b/attachment.html>


Mais detalhes sobre a lista de discussão R-br