2016-06-15 11 views
0

I-Datenrahmen erschaffe, die wie folgt aussehen:Set Vektor/Datenrahmen Spaltennamen aus dem Inhalt einer Variablen

  overlap D  R 
H3K9ME3 2635 209 91237 

Jedoch habe ich einige, die eine oder mehrere Spalten fehlen. Ich muss diese Spalten erstellen und den Einträgen einen Wert von NA geben. Ich habe versucht, eine Schleife zu erstellen, die nach fehlenden Spalten aus einer Liste (Zeichenvektor) suchen und fehlende Felder ausfüllen kann.

Hier ein Beispiel:

# this one is missing a column: 
t_table<-structure(list(overlap = 14L, R = 59329L), 
        .Names = c("overlap","R"), 
        class = "data.frame", row.names = "H3K27ME3") 
> t_table 
     overlap  R 
H3K27ME3  14 59329 

In dieser Schleife, versuche ich zu suchen und die fehlenden Spalt hinzufügen:

t_table2<-t_table 
    for(column in c("overlap","D","R")){ 
    if(! column %in% colnames(t_table2)) t_table2<-cbind(t_table2,column=NA) 
    } 
    t_table2 

Allerdings kommt der Spaltenname als die wörtliche Zeichenkette aus von "Spalte" und nicht als der Wert von column;

> t_table2 
     overlap  R column 
H3K27ME3  14 59329  NA 

Wie stellen Sie diese so, dass der resultierende Spaltenname der Wert des Objekts ist column und nicht die „Spalte“, in diesem Fall?

Antwort

1

können Sie setNames verwenden, um dynamisch die Spaltennamen für den neuen Datenrahmen gesetzt:

t_table2<-t_table 
for(column in c("overlap","D","R")){ 
    if(! column %in% colnames(t_table2)) { 
     t_table2<-setNames(cbind(t_table2,NA), c(names(t_table2), column)) 
}} 

t_table2 
     overlap  R D 
H3K27ME3  14 59329 NA 
Verwandte Themen