2012-04-23 5 views
67

existiert habe ich einen data.frame mit dem Namen „abcframe“Um festzustellen, ob eine Spalte in Datenrahmen oder nicht

 a b c 
    1 1 1 
    2 2 3 

Wie kann ich feststellen, ob eine Spalte existiert oder nicht in einem bestimmten Datenrahmen? Zum Beispiel würde ich gerne finden, ob eine Spalte d im data.frame abcframe existiert.

+0

Haben Sie, ob Ihre Datenrahmen eine Spalte mit dem Namen 'd' wissen wollen, hat, oder Möchten Sie wissen, ob ein gegebener Vektor "d" gleich einer der Spalten Ihres Datenrahmens ist? –

+0

Ich möchte wissen, ob Dataframe hat eine cloumn mit Name d oder nicht –

Antwort

115

Unter der Annahme, dass der Name des Datenrahmens dat ist und dass Ihre Spaltennamen zu überprüfen "d" sind, können Sie den %in% Operator verwenden:

if("d" %in% colnames(dat)) 
{ 
    cat("Yep, it's in there!\n"); 
} 
+1

danke, Sie haben mein Problem gelöst. –

+2

Sie der Mann jetzt dämlich! (mit anderen Worten, danke!) –

+2

Wenn Sie die Inverse sehen, dh wenn die Spalte nicht da ist, fügen Sie '' 'am Anfang hinzu:' if (! "d"% in% colnames (dat)) ' –

19

Sie haben eine Reihe von Optionen, einschließlich der Verwendung von %in% und grepl :

dat <- data.frame(a=1:2, b=2:3, c=4:5) 
dat 
    a b c 
1 1 2 4 
2 2 3 5 

die Namen der Spalten Um:

names(dat) 
[1] "a" "b" "c" 

Verwenden %in% für die Mitgliedschaft überprüfen:

"d" %in% names(dat) 
[1] FALSE 

Or use `grepl` to check for a match: 

grepl("d", names(dat)) 
[1] FALSE FALSE FALSE 
+10

Um das 'grepl' etwas genauer zu bekommen, könntest du' grepl ("^ d $", Namen) verwenden (dat)) ', um sicherzustellen, dass eine Spalte mit dem Namen' dd' nicht 'TRUE' zurückgibt. – BenBarnes

+0

Danke dafür, 'colnames' hat nicht für mich funktioniert, aber' names' hat es getan. – Docconcoct

0

Sie könnten verwenden any:

> names(dat) 
[1] "a" "b" "c" 
> any(names(dat) == 'b') 
[1] TRUE 
> any(names(dat) == 'B') 
[1] FALSE 
Verwandte Themen