2017-05-06 5 views
2

Ich möchte einige meiner Dateien in eine Datei kombinieren. Ich fand die Codes aus einem der Posten in der Website und angepasst es zu meinem eigenen Gebrauch wie folgt:Fehler in mutate_impl (.data Punkte): Bindung nicht gefunden

library(dplyr) 
library(readr) 

df2 <- list.files(pattern = "test_.*\\.csv",full.names = TRUE) %>% 
    lapply(read_csv) %>% 
    bind_rows %>% 
    transmute(Isolate=Iso, 
      Condit=Condit, 
      rep=rep, 
      set=set, 
      hpi=hpi, 
      OD=OD) 

Aber ich bekomme diese Fehlermeldung:

Error in mutate_impl(.data, dots) : binding not found: 'Iso' 

Ich verstehe nicht, warum. Könnte mir jemand helfen?

Vielen Dank!

Die Eingabedatei 1: test_.1.csv

Iso rep set Condit hpi OD 
1 A22.1 1 3 T27 84 0.232 
2 A22.1 2 3 T27 84 0.23 
3 A22.1 3 3 T27 84 0.214 
4 D2.1 1 3 T27 84 0.049 
5 D2.1 2 3 T27 84 0.054 
6 D2.1 3 3 T27 84 0.049 

Die Eingabedatei 2: test_.2.csv

Iso rep set Condit hpi OD 
1 A22.1 1 3 T27 72 0.191 
2 A22.1 2 3 T27 72 0.186 
3 A22.1 3 3 T27 72 0.179 
4 D2.1 1 3 T27 72 0.048 
5 D2.1 2 3 T27 72 0.053 
+0

Das offensichtliche, aber wenn die Beispiele, die Sie geben, bereits eingelesen sind, sind diese trotz des Suffix keine CSV-Dateien. 'read_table2' funktioniert besser beim Kopieren und Einfügen, aber SO formatiert Tabulatoren möglicherweise als Leerzeichen neu, so dass 'read_table' oder' read_tsv' möglicherweise auf den Originalen funktionieren. – alistaire

Antwort

1

Ich habe Ihren Code ausführen und bekam die gleiche Fehlermeldung

Error: binding not found: 'Iso'

Grund hierfür scheint read_csv vom readr Paket zu sein. Wenn verwendet, um eine einzelne Datei zu lesen,

read_csv("test_.1.csv") 

kehrt:

Parsed with column specification: 
cols(
    `Iso rep set Condit hpi OD` = col_character() 
) 
# A tibble: 6 × 1 
    `Iso rep set Condit hpi OD` 
          <chr> 
1 A22.1 1 3 T27 84 0.232 
2 A22.1 2 3 T27 84 0.23 
3 A22.1 3 3 T27 84 0.214 
4 D2.1 1 3 T27 84 0.049 
5 D2.1 2 3 T27 84 0.054 
6 D2.1 3 3 T27 84 0.049 

So kennt read_csv offenbar nicht, wie die Zeilen in Spalten aufgeteilt.


Der folgende Code fread() und rbindlist() vom data.table Paket mit arbeitet für mich. Es ändert den Namen der Spalte Iso wie vom OP angefordert. Außerdem wird eine Spalte hinzugefügt, die den Ursprung jeder Zeile angibt.

file_names <- list.files(pattern = "test_.*\\.csv", full.names = TRUE) 
library(data.table) 
df2 <- 
    rbindlist(
    lapply(file_names, fread), idcol = "file_id" 
)[, file_id := basename(file_names)[file_id] # add origin 
    ][, setnames(.SD, "Iso", "Isolate")] # rename one column 

df2 
#  file_id Isolate rep set Condit hpi OD 
# 1: test_.1.csv A22.1 1 3 T27 84 0.232 
# 2: test_.1.csv A22.1 2 3 T27 84 0.230 
# 3: test_.1.csv A22.1 3 3 T27 84 0.214 
# 4: test_.1.csv D2.1 1 3 T27 84 0.049 
# 5: test_.1.csv D2.1 2 3 T27 84 0.054 
# 6: test_.1.csv D2.1 3 3 T27 84 0.049 
# 7: test_.2.csv A22.1 1 3 T27 72 0.191 
# 8: test_.2.csv A22.1 2 3 T27 72 0.186 
# 9: test_.2.csv A22.1 3 3 T27 72 0.179 
#10: test_.2.csv D2.1 1 3 T27 72 0.048 
#11: test_.2.csv D2.1 2 3 T27 72 0.053 
Verwandte Themen