mudança de nomes de colunas (variáveis) em uma lista

Olá pessoal, sou iniciante no R e estou quebrando a cabeça em um problema que, acho, deve ter uma solução simples. Tenho uma lista de data.frames com os mesmos nomes nas colunas (nomes das variáveis). No total são 8 itens (data.frames). Quero mudar o nome de algumas variáveis e estou usando para isso, gsub(). Com um laço for consegui executar a tarefa. O código que usei foi for(i in 1:length(Indicador)) { names(Indicador[[i]]) <- gsub("Pontos", "Total.pontos.atend", names(Indicador[[i]])) names(Indicador[[i]]) <- gsub("Comercio", "Comercio", names(Indicador[[i]])) names(Indicador[[i]]) <- gsub("(.)*Folha", "Liberada.folha", names(Indicador[[i]])) names(Indicador[[i]]) <- gsub("(.)*Atendimento", "Ponto.atend", names(Indicador[[i]])) } onde, Indicador = list(), e as strings dentro do gsub são os nomes da variáveis originais e os nomes novos, respectivamente. Porém acredito que exista uma forma mais eficaz, provavelmente sem usar o laço for. Tentei de outra maneira (para o primeiro gsub do laço anterior) com
gsub("Pontos", "Total.pontos.atend", lapply(Indicador, names))
Esse último gsub fez as mudanças, porém gera uma saída como [1] "c(\"Nome\", \"Codigo\", \"Lotericos\", \"SAA\", \"SNC\", \"PAE\", \"Total.pontos.atend\")" [2] "c(\"Nome\", \"Codigo\", \"Lotericos\", \"SAA\", \"SNC\", \"PAE\", \"Total.pontos.atend\")" [3] "c(\"Nome\", \"Codigo\", \"Lotericos\", \"SAA\", \"SNC\", \"PAE\", \"Total.pontos.atend\")" [4] "c(\"Nome\", \"Codigo\", \"Lotericos\", \"SAA\", \"SNC\", \"PAE\", \"Total.pontos.atend\")" [5] "c(\"Nome\", \"Codigo\", \"Lotericos\", \"SAA\", \"SNC\", \"PAE\", \"Total.pontos.atend\")" [6] "c(\"Nome\", \"Codigo\", \"Lotericos\", \"SAA\", \"SNC\", \"PAE\", \"Total.pontos.atend\")" [7] "c(\"Nome\", \"Codigo\", \"Lotericos\", \"SAA\", \"SNC\", \"PAE\", \"Total.pontos.atend\")" [8] "c(\"Nome\", \"Codigo\", \"Lotericos\", \"SAA\", \"SNC\", \"PAE\", \"Total.pontos.atend\")" [9] "c(\"Nome\", \"Codigo\", \"Lotericos\", \"SAA\", \"SNC\", \"PAE\", \"Total.pontos.atend\")" Aqui, "Pontos" foi alterado para "Total.pontos.atend". Se isso estiver certo como faço para atribuir o novo nome para os nomes das variáveis dos data.frames em cada item da lista "Indicador". Abraços! Cassiano Novais Consultor economista

Cassiano, uma forma alternativa é a rotina abaixo: Suponha que você tenha um banco chamdado atual com as variáveis: "Pontos", "Total.pontos.atend", "indicador" e queira renomear essas variáveis para "pontuacao", "total_atend", "parametro". Use a rotina: novo<-data.frame(pontuacao=atual$Pontos,total_atend=atual$Total.pontos.atend,parametro= atual$indicador) Veja se funciona. []'s Edson Lira Estatístico Manaus-Amazonas ________________________________ De: Cassiano <crns13@gmail.com> Para: r-br@listas.c3sl.ufpr.br Enviadas: Terça-feira, 9 de Agosto de 2011 8:37 Assunto: [R-br] mudança de nomes de colunas (variáveis) em uma lista Olá pessoal, sou iniciante no R e estou quebrando a cabeça em um problema que, acho, deve ter uma solução simples. Tenho uma lista de data.frames com os mesmos nomes nas colunas (nomes das variáveis). No total são 8 itens (data.frames). Quero mudar o nome de algumas variáveis e estou usando para isso, gsub(). Com um laço for consegui executar a tarefa. O código que usei foi for(i in 1:length(Indicador)) { names(Indicador[[i]]) <- gsub("Pontos", "Total.pontos.atend", names(Indicador[[i]])) names(Indicador[[i]]) <- gsub("Comercio", "Comercio", names(Indicador[[i]])) names(Indicador[[i]]) <- gsub("(.)*Folha", "Liberada.folha", names(Indicador[[i]])) names(Indicador[[i]]) <- gsub("(.)*Atendimento", "Ponto.atend", names(Indicador[[i]])) } onde, Indicador = list(), e as strings dentro do gsub são os nomes da variáveis originais e os nomes novos, respectivamente. Porém acredito que exista uma forma mais eficaz, provavelmente sem usar o laço for. Tentei de outra maneira (para o primeiro gsub do laço anterior) com
gsub("Pontos", "Total.pontos.atend", lapply(Indicador, names)) Esse último gsub fez as mudanças, porém gera uma saída como
[1] "c(\"Nome\", \"Codigo\", \"Lotericos\", \"SAA\", \"SNC\", \"PAE\", \"Total.pontos.atend\")" [2] "c(\"Nome\", \"Codigo\", \"Lotericos\", \"SAA\", \"SNC\", \"PAE\", \"Total.pontos.atend\")" [3] "c(\"Nome\", \"Codigo\", \"Lotericos\", \"SAA\", \"SNC\", \"PAE\", \"Total.pontos.atend\")" [4] "c(\"Nome\", \"Codigo\", \"Lotericos\", \"SAA\", \"SNC\", \"PAE\", \"Total.pontos.atend\")" [5] "c(\"Nome\", \"Codigo\", \"Lotericos\", \"SAA\", \"SNC\", \"PAE\", \"Total.pontos.atend\")" [6] "c(\"Nome\", \"Codigo\", \"Lotericos\", \"SAA\", \"SNC\", \"PAE\", \"Total.pontos.atend\")" [7] "c(\"Nome\", \"Codigo\", \"Lotericos\", \"SAA\", \"SNC\", \"PAE\", \"Total.pontos.atend\")" [8] "c(\"Nome\", \"Codigo\", \"Lotericos\", \"SAA\", \"SNC\", \"PAE\", \"Total.pontos.atend\")" [9] "c(\"Nome\", \"Codigo\", \"Lotericos\", \"SAA\", \"SNC\", \"PAE\", \"Total.pontos.atend\")" Aqui, "Pontos" foi alterado para "Total.pontos.atend". Se isso estiver certo como faço para atribuir o novo nome para os nomes das variáveis dos data.frames em cada item da lista "Indicador". Abraços! Cassiano Novais Consultor economista _______________________________________________ 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 (2)
-
Cassiano
-
Edson Lira