2016-04-29 12 views
0

In R, wie man 'benannten' Vektor erstellt und anfügt. Mein aktueller Ansatz besteht darin, einen separaten Namenvektor zu erstellen und später Namen zuzuordnen.Anfügen benannter Vektor in R

v = c() 
vName = c() 
for (i in 1:5) { 
    # do something complicated and store output 
    k = i*i ## or get output from any other function 
    v = c(v,k) 
    vName = c(vName, k) 
} 
names(v) = vName 

Gibt es einen besseren Weg, es zu tun?

+1

Ein Aspekt ist, dass es immer eine schlechte Idee ist, iterativ an einen Vektor (oder data.frame) anzuhängen. Wenn möglich, weisen Sie den Vektor mit einem numerischen Wert (vectorLength) vor. Selbst wenn Sie die genaue Größe nicht kennen, ist das Überschießen immer noch besser als das Anhängen. – lmo

+0

@jogo Das Ziel ist nicht, einfach einen benannten Vektor zu erstellen, sondern ihn mit etwas Ausgabe anzufügen (hat im Beispiel einige Bearbeitungen gemacht). –

+0

@lmo Können Sie bitte ein Beispiel geben? –

Antwort

4

In einigen einfachen Fällen können Sie setNames verwenden:

setNames(1:5, letters[1:5]) 

aber Namen außerhalb der Schleife ist ein guter Weg zu gehen Anwendung. Wenn Sie den Vektor vorbelegt, können Sie die Namen in der Schleife hinzu:

# pre-allocate vectors of known size (length of for loop) 
v=numeric(5) 
vName = character(5) 
for (i in 1:5) { 
    # do something complicated and store output 
    k = i*i ## or get output from any other function 
    kName = <something related to k> 

    v[i] = k 
    vName[i] = kName 
} 

Vorbelegen der Vektoren, einen festen Platz im Speicher einrichtet, die in der Schleife gefüllt werden. Wenn Sie sie wiederholt anhängen, muss R in jeder Iteration Kopien der Vektoren erstellen.

+0

plus 1 für den Hinweis mit der Vorbelegung. – Jimbou