2017-04-24 13 views
0

Es ist das erste Mal, dass ich R verwende, da ich viele Diagramme für jede Datei erstellen muss, die ich habe.Histogramm wird nicht erstellt in R

Ich habe eine CSV-Datei mit vier Spalten und ich möchte ein Histogramm für jede Datei erstellen und in einem Verzeichnis speichern. Ich könnte die Dateien lesen und einen Datenrahmen an sie anhängen. aber wenn ich renne, scheint der Code irgendwo stecken geblieben zu sein, weder Error noch die Plots! Daten so aussehen

t1;w1;tt;probability 
0;0.04745911973818716;reflections;0.0005 
0;0.04745911973818716;clouds;0.001 
0;0.04745911973818716;tree;0.14 

Hier ist mein Code:

#list files 
temp = list.files("myDirectory",pattern ="*.csv") 
path <- 
file.path("myDirectory") 

for (i in 1:length(temp)){ 
    data <- read.csv(file.path(path, temp[i]), sep = ";") 

    mypath <- file.path("C:","folder1","folder2","plots",paste("myplot_", i,".tiff", sep = "")) 
    tiff(file=mypath, width = 8, height = 8,units = 'in',res=300) 

    hist(c(data$probabilities,data$words), breaks= 0:1, main="word probabilities",xlab="words") 

    dev.off() 
} 
+0

Könnten Sie schreiben ein Beispiel dafür, wie die CSV-Dateien aus? Nur eine Untermenge sollte in Ordnung sein, solange sie den gleichen Fehler verursacht. – AkselA

+1

'hist' (zumindest die Basis-R-Version) nimmt einen einzelnen Vektor von Werten. Sie geben ihm zwei miteinander verkettete Vektoren verschiedener Typen, die wahrscheinlich in Zeichen umgewandelt werden - und dann beschränkt Ihre Anweisung »breaks« den Bereich auf 0-1, so dass es unwahrscheinlich ist, dass irgendetwas gezeichnet wird. Versuchen Sie nur 'hist (Daten $ Wahrscheinlichkeiten)'. –

+0

@AkselA: Ich aktualisierte – Raha1986

Antwort

1

Sind Sie sicher, was Sie wirklich wollen, ist ein histogram?
Wenn Ihre .csv-Dateien mehr als ein paar Dutzend Zeilen enthalten und Sie die Wahrscheinlichkeitsverteilungen grafisch darstellen möchten, ist dies wahrscheinlich der Fall. Wenn es weniger Zeilen gibt und Sie die Wahrscheinlichkeit jedes einzelnen Worts plotten möchten, suchen Sie wahrscheinlich nach einem Barplot.
Nur für den Fall, hier sind Beispiele für beide. Ich habe ein paar Dinge vereinfacht, um es komplett eigenständig zu machen.

Erstellen Sie zuerst ein Verzeichnis namens "so-test" und fügen Sie ein paar .csv-Dateien hinzu.

dir.create(testdir <- "so-test") 

write("t1;w1;tt;probability 
     0;0.04745911973818716;reflections;0.05 
     0;0.04745911973818716;clouds;0.02 
     0;0.04745911973818716;tree;0.14", 
     file.path(testdir, "so-test1.csv")) 

write("t1;w1;tt;probability 
     0;0.04745911973818716;cramp;0.007 
     0;0.04745911973818716;practice;0.009 
     0;0.04745911973818716;brush;0.02", 
     file.path(testdir, "so-test2.csv")) 

eine Liste von CSV-Dateien Holen Sie in das Verzeichnis

temp <- list.files(testdir, pattern=".csv$"); temp 
path <- file.path(testdir) 

ein Histogramm über die Wahrscheinlichkeiten erstellen.
Es sieht ein bisschen komisch aus, da die Anzahl der Wahrscheinlichkeiten nur drei ist.

for (i in 1:length(temp)) { 
    data <- read.csv(file.path(path, temp[i]), sep = ";") 

    mypath <- file.path(path, paste("hist_", i, ".png", sep="")) 
    png(file=mypath, width=8, height=8, units='in', res=300) 

    hist(data$probability, main="word probabilities", 
     xlab="probability") 

    dev.off() 
} 

enter image description here enter image description here

ein BarPlot erstellen mit jedem Wort die Wahrscheinlichkeit zugeordnet anzeigt.

for (i in 1:length(temp)) { 
    data <- read.csv(file.path(path, temp[i]), sep = ";") 

    mypath <- file.path(path, paste("barplot_", i, ".png", sep="")) 
    png(file=mypath, width=8, height=8, units='in', res=300) 

    barplot(data$probability, names.arg=data$tt, 
     main="word probabilities", ylab="probability") 

    dev.off() 
} 

enter image description here enter image description here