Fissa dimnames (x) di testi oggetti in R attraverso un loop
Domanda
Si supponga che ho un elenco di variabili (classe: XTS) in .GlobalEnv
identificati come segue:
ABC.xyz
DEF.xyz
GHI.xyz
Queste variabili sono generati tramite una funzione.
Attualmente, le "colonna" di ciascuna variabile sono dialogo con l'uscita della funzione originale.
desidero rinominare le colonne in ciascuna di queste variabili per le prime tre lettere del nome variabile, seguito da un suffisso generico; dire:
".XXX"
Ho cercato di scrivere un breve ciclo che utilizza la funzione dimnames(x)
per raggiungere questo obiettivo è il seguente:
rename.list <- ls(pattern="*.xyz",envir=.GlobalEnv)
for (i in 1:length(rename.list)){
dimnames(rename.list[i]) <-list(
NULL,
c(paste(substr(rename.list[i],0,3),".XXX",sep="")))
}
Questo produce l'errore:
error in dimnames(rename.list[i]) <- list(NULL, c(paste(substr(rename.list[i], 0, 3), :
'dimnames' applied to non-array
posso vedere perché si verifica questo errore (utilizzando dimnames su rename.list sta chiamando il nome stesso, piuttosto che l'oggetto XTS), ma non sapete come ottenere intorno a questo. Provato utilizzando get
etc.
dettagli:
R 2.13 Win 7 Pacchetto 'XTS' caricato.
Molte grazie in anticipo per qualsiasi aiuto (o suggerimenti per evitare il loop a tutti!)
Soluzione
Si può provare assign
:
tmp <- get(rename.list[i])
names(tmp) <- ...
assign(rename.list[i], tmp, envir=.GlobalEnv)