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.