2014-07-16 5 views
7

Wenn ichZugriff lapply Spaltennamen

lapply(dataframe, function(x) { 
    column.name <- #insert code here 
}) 
tue

Wie würde ich in der Lage sein, den Namen der Spalte zuzugreifen, dass die lapply Funktion gerade bearbeitet? Ich möchte den Namen der Spalte einer Variablen namens column.name zuweisen, wie im Code angegeben. Nur um klar zu stellen, ja, column.name ändert sich mit jeder Iteration des Staples.

+0

Der Spaltenname sollte der Name jedes Listenelements sein, das von 'lapply()' zurückgegeben wird. Löst das dein Problem? – TARehman

+0

Sie könnten 'lapply (seq_along (Datenrahmen), Funktion (i) Namen (Datenrahmen) [i])' ', aber es könnte bequemer sein, nur eine" for "-Schleife zu verwenden, da Sie auch Ihren" Datenrahmen ändern möchten ". –

+1

Ich bevorzuge es, die Funktion so zu schreiben, dass sie auf die Namen selbst wirkt - so wird die Ausgabe eine benannte Liste sein. Etwas wie 'lapply (Namen (Datenrahmen), Funktion (x) {Datenrahmen [x]}' – AndrewMacDonald

Antwort

6

Es gibt einen Weg, eigentlich.

df <- data.frame(a = 1:2, b = 3:4, c = 5:6) 
lapply(df, function(x) names(df)[substitute(x)[[3]]]) 
$a 
[1] "a" 

$b 
[1] "b" 

$c 
[1] "c" 

Aber das sollte als letztes Mittel verwendet werden. Verwenden Sie stattdessen etwas wie (eine andere Option wird in Kommentaren angegeben)

lapply(seq_along(df), function(x) names(df[x])) 
[[1]] 
[1] "a" 

[[2]] 
[1] "b" 

[[3]] 
[1] "c" 
+0

Ah das ist ziemlich intuitiv. Aber ich denke, der zweite Weg funktioniert auch gut. – user41912