2017-03-09 4 views
0

Ich habe Probleme mit Spaltennamen, die ein Interpunktionszeichen enthalten. diagnostizierte ich das Problem wie folgt:Interpunktionszeichen in Spaltennamen werden durch ..X ersetzt

file <- "./spam.data.txt" 
columnNames <- c('word_freq_make',  
       'word_freq_address',    
       ...   
       'word_freq_table',   
       'word_freq_conference', 
       'char_freq_;',    
       'char_freq_(',    
       'char_freq_[',    
       'char_freq_!',    
       'char_freq_$',    
       'char_freq_#',    
       'capital_run_length_average', 
        ...) 
spamd <- read.table(file, sep = "" , header = F, stringsAsFactors= F, 
        col.names = columnNames) 

# First look 
spamd$word_freq_85   # [1] 0 0 0 0 0 0 0 0 1 0 1 ... 
spamd$char_freq_;   # NULL 
colnames(spamd) 

Die Ausgabe von colnames() ist:

[1] "word_freq_make"    "word_freq_address"  ...   


[46] "word_freq_table"   "word_freq_conference"  "char_freq_."    "char_freq_..1"    
[51] "char_freq_..2"    "char_freq_..3"    "char_freq_..4"    "char_freq_..5"    "capital_run_length_average" 

Das heißt, haben die Satzzeichen in Spaltennamen durch "..1" ersetzt," .. 2 "," ..3 ", ...

Warum also bitte?

EDIT FOLGENDE AKRUN Antwort:

Mit:

spamd <- read.table(file, sep = "" , header = F, stringsAsFactors= F, 
        col.names = columnNames, check.names = FALSE) 

löst stattdessen die Umbenennung Problem. Das heißt, ergibt colnames() jetzt:

[41] "word_freq_cs"    "word_freq_meeting"   "word_freq_original"   "word_freq_project"   "word_freq_re"    
[46] "word_freq_edu"    "word_freq_table"   "word_freq_conference"  "char_freq_;"    "char_freq_("    
[51] "char_freq_["    "char_freq_!"    "char_freq_$" 

Aber wenn ich spamd$char_freq_X versuchen wobei X eine beliebige Satzzeichen noch NULL ich. Also, wie bekomme ich Zugang zu diesen Spalten?

Dank

+5

rtfm 'benutzen? Read.table' und'? Make.names' –

+0

Ich verstehe nicht, was Sie sagen, sry. Ich bin neu bei R. – hartmut

+0

Ich habe nur gesagt, dass dies ein dokumentiertes Verhalten ist, und Sie könnten das selbst gelesen haben, wenn Sie sich die Funktionsdokumentation angesehen haben. Dies ist verfügbar, indem Sie ein Fragezeichen (?) Gefolgt von dem Funktionsnamen in Ihrer R-Konsole eingeben. –

Antwort

1

Wir brauchen check.names=FALSE

spamd <- read.table(file, sep = "" , header = F, stringsAsFactors= F, 
       col.names = columnNames, check.names = FALSE) 
+0

Vielen Dank. Das löst das Umbenennungsproblem. Aber, wie in der Bearbeitung erläutert, kann ich immer noch nicht auf Spalten mit Satzzeichen im Namen zugreifen. Können Sie mir bitte mehr erzählen? – hartmut

+2

@hartmut Sie können backquotes verwenden, um auf diese Spalten zuzugreifen, wenn Sie mit '$' z. B. 'spamd $' 'char_freq_X''' extrahieren (verwenden Sie nur ein einziges Backquote - vergessen Sie, wie Sie es in Kommentaren angeben – akrun

Verwandte Themen