names(mydat)[c(name)]<-c("newname")
A partir disso, sei que o nome da coluna / variável "name" do quadro de dados mydat é substituído por "newname".
Minha pergunta é se, eu quero fazer isso por um loop, para que eu tenha algo como:
newname1 newname2 newname3 newname4 e assim por diante, como faço isso?
Isto é o que fez e não funcionou:
for(i in 1:4){
names(mydat)[c(name)]<-c("newname"i)
}
Existe uma maneira de codificar isso? muito obrigado a todos que poderiam ser de ajuda. Owusu Isaac
ugly_vars <- names(dplyr::select(df, starts_with("abcde_")))
names(ESM_df[ugly_vars]) <- str_c("abc_", 1:length(ugly_vars))
Respostas:
A solução mais óbvia seria alterar seu código no loop for com o seguinte:
Mas você precisa esclarecer qual é a sua variável
name
. No momento, esse loop fará 4 renomeações da coluna única.Em geral, se os nomes que você deseja alterar estiverem em vetor, este é um procedimento de subconjunto padrão:
fonte
Tente usar
sprintf
oupaste
, assim:Além disso, observe que isso
names(mydat)[c(name)]
é um absurdo mais ou menos;c(name)
é equivalente a escrever justamentename
e significa "obter o valor da variável chamadaname
'; bracket extrairá pelo menos elementos de,names(mydat)
mas somente se aname
variável contiver um índice numérico ou booleano.Se você deseja substituir as colunas chamadas
name
porname1, name2, ..., nameN
, use algo como isto:EDIT: Bem, se você apenas deseja remover nomes de colunas duplicados, existe uma maneira ainda mais fácil; R tem uma
make.names
função que corrige esse problema; pode ser usado assim:Ainda mais curto, o mesmo pode ser obtido apenas escrevendo:
fonte
grepl
seria bom fazer o trabalho mais geral.Eu tive o mesmo problema e resolvi-o com este código:
fonte