Frage

Angenommen, ich habe eine Liste von Variablen (Klasse: XTs) in .GlobalEnv identifiziert wie folgt:

ABC.xyz
DEF.xyz
GHI.xyz

Diese Variablen werden über eine Funktion erzeugt.

Gegenwärtig sind die "Säulenheader" in jeder Variablen Unsinn aus der Ausgabe der ursprünglichen Funktion.

Ich möchte die Spalten in jeder dieser Variablen in den ersten drei Buchstaben des variablen Namens umbenennen, gefolgt von einem generischen Suffix; sagen:

".XXX"

Ich habe versucht, eine kurze Schleife zu schreiben, die die Funktion verwendet dimnames(x) Um dies zu erreichen, ist wie folgt:

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="")))
}

Dies erzeugt den Fehler:

error in dimnames(rename.list[i]) <- list(NULL, c(paste(substr(rename.list[i], 0, 3), : 'dimnames' applied to non-array

Ich kann es sehen warum Dieser Fehler tritt auf (unter Verwendung von Dimnames auf der Umbenennierung.List wird der Name selbst anstelle des XTS -Objekts aufgerufen), aber nicht sicher, wie man sich umgeht. Versucht zu verwenden get usw.

Einzelheiten:

R 2.13 Win 7 Paket 'XTS' geladen.

Vielen Dank im Voraus für jede Hilfe (oder Vorschläge, um die Schleife überhaupt zu vermeiden!)

War es hilfreich?

Lösung

Du kannst es versuchen assign:

tmp <- get(rename.list[i])
names(tmp) <- ...
assign(rename.list[i], tmp, envir=.GlobalEnv)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top