2016-03-29 13 views
0

Ich habe einen Code für einen Hochschulauftrag geschrieben. Die Zuordnung basiert auf verschiedenen Betonproben und deren Zugfestigkeiten. Es gibt 20 Arten von Betonmischungen (hergestellt aus vier verschiedenen Beschleunigern und fünf verschiedenen Weichmachern). Unsere Aufgabe ist es, eine statistische Analyse dieses Datenrahmen zu tun:R-Code erstellt keine Objekte?

TStrength accelerator plasticiser 
1 3.417543   1   1 
2 2.887113   1   2 
3 3.600988   1   3 
4 3.702631   1   4 
5 3.686944   1   5 
6 3.699785   1   1 
7 3.112972   1   2 
8 3.918160   1   3 
9 3.600538   1   4 
10 2.748832   1   5 
11 3.404498   1   1 
12 3.735437   1   2 
13 3.347577   1   3 
14 3.101556   1   4 
15 3.527621   1   5 
16 3.856831   1   1 
17 3.492118   1   2 
18 3.928343   1   3 
19 3.511689   1   4 
20 3.371985   1   5 
21 3.069794   2   1 
22 3.168010   2   2 
23 3.316657   2   3 
24 3.455162   2   4 
25 2.818250   2   5 
26 4.054507   2   1 
27 3.065984   2   2 
28 3.201351   2   3 
29 3.417554   2   4 
30 3.364320   2   5 
31 3.218677   2   1 
32 2.647151   2   2 
33 3.222705   2   3 
34 3.145210   2   4 
35 3.636642   2   5 
36 3.317620   2   1 
37 3.645922   2   2 
38 2.556071   2   3 
39 3.177663   2   4 
40 3.014374   2   5 
41 3.838183   3   1 
42 4.155951   3   2 
43 3.886330   3   3 
44 3.723898   3   4 
45 4.425442   3   5 
46 3.738460   3   1 
47 3.217834   3   2 
48 3.942241   3   3 
49 3.699851   3   4 
50 3.797089   3   5 
51 3.652456   3   1 
52 4.851609   3   2 
53 3.359099   3   3 
54 4.089559   3   4 
55 4.282991   3   5 
56 3.803784   3   1 
57 3.519551   3   2 
58 3.935084   3   3 
59 3.890324   3   4 
60 4.611936   3   5 
61 3.343098   4   1 
62 3.713952   4   2 
63 3.629883   4   3 
64 3.082509   4   4 
65 3.346548   4   5 
66 3.277845   4   1 
67 3.509506   4   2 
68 3.490567   4   3 
69 3.235009   4   4 
70 3.970925   4   5 
71 3.504646   4   1 
72 3.270798   4   2 
73 3.547298   4   3 
74 3.278489   4   4 
75 3.322743   4   5 
76 2.975010   4   1 
77 3.384996   4   2 
78 3.399486   4   3 
79 3.703567   4   4 
80 3.214973   4   5 

Mein erster Schritt, um die Mittel der Tstrength Werte für jeden der 20 konkreten Typen, um herauszufinden, um zu versuchen, war (es gibt vier Arten von jedem eindeutigen konkrete Probe). Ich bin sehr neu für R, und mein Code ist sicherlich nicht schön, aber das ist der Code, den ich die Mittel zu finden, schrieb:

#Setting the correct directory 
setwd("C:/Users/Matthew/Desktop/Work/Engineering") 

#Creating the data frame object, Concrete. 
#Note that this will only work if the file 
#s...-CW.dat is in the current working directory 
#Therefore for this code to work, CreateData.r must 
#be run on the individual computer with the 
#given matriculation number, and the file must be saved 
#in the specified directory 

Concrete<-read.table(file='s...-CW.dat',header=TRUE) 

#Since the samples of concrete are made from 4 different accelerators and 
#5 different plasticisers there will be 4*5=20 unique combinations from 
#which concrete samples can come from (i.e. 1,1; 1,2; 4,5 etc). 
# There are four samples of each combination 


#The next section of code is used to find the mean of the four samples, 
#for each combination (20 total) 


#creating a list with Tstrength from all (1,1) combinations 
#Then finding average 
combo1 = list(Concrete[1,1],Concrete[6,1],Concrete[11,1],Concrete[16,1]) 
combo1mean = mean(unlist(combo1)) 

#Repeating for (1,2) 
combo2 = list(Concrete[2,1],Concrete[7,1],Concrete[12,1],Concrete[17,1]) 
combo2mean = mean(unlist(combo2)) 

#Repeating for (1,3) 
combo3 = list(Concrete[3,1],Concrete[8,1],Concrete[13,1],Concrete[18,1]) 
combo3mean = mean(unlist(combo3)) 

#Repeating for (1,4) 
combo4 = list(Concrete[4,1],Concrete[9,1],Concrete[14,1],Concrete[19,1]) 
combo4mean = mean(unlist(combo4)) 

#Repeating for (1,5) 
combo5 = list(Concrete[5,1],Concrete[10,1],Concrete[15,1],Concrete[20,1]) 
combo5mean = mean(unlist(combo5)) 

#Repeating for (2,1) 
combo6 = list(Concrete[21,1],Concrete[26,1],Concrete[31,1],Concrete[36,1]) 
combo6mean = mean(unlist(combo6)) 

#Repeating for (2,2) 
combo7 = list(Concrete[22,1],Concrete[27,1],Concrete[32,1],Concrete[37,1]) 
combo7mean = mean(unlist(combo7)) 

#Repeating for (2,3) 
combo8 = list(Concrete[23,1],Concrete[28,1],Concrete[33,1],Concrete[38,1]) 
combo8mean = mean(unlist(combo8)) 

#Repeating for (2,4) 
combo9 = list(Concrete[24,1],Concrete[29,1],Concrete[34,1],Concrete[39,1]) 
combo9mean = mean(unlist(combo9)) 


#Repeating for (2,5) 
combo10 = list(Concrete[25,1],Concrete[30,1],Concrete[35,1],Concrete[40,1]) 
combo10mean = mean(unlist(combo10)) 


#Repeating for (3,1) 
combo11 = list(Concrete[41,1],Concrete[46,1],Concrete[51,1],Concrete[56,1]) 
combo11mean = mean(unlist(combo11)) 


#Repeating for (3,2) 
combo12 = list(Concrete[42,1],Concrete[47,1],Concrete[52,1],Concrete[57,1]) 
combo12mean = mean(unlist(combo12)) 

#Repeating for (3,3) 
combo13 = list(Concrete[43,1],Concrete[48,1],Concrete[53,1],Concrete[58,1]) 
combo13mean = mean(unlist(combo13)) 


#Repeating for (3,4) 
combo14 = list(Concrete[44,1],Concrete[49,1],Concrete[54,1],Concrete[59,1]) 
combo14mean = mean(unlist(combo14)) 


#Repeating for (3,5) 
combo15 = list(Concrete[45,1],Concrete[50,1],Concrete[55,1],Concrete[60,1]) 
combo15mean = mean(unlist(combo15)) 

#Repeating for (4,1) 
combo16 = list(Concrete[61,1],Concrete[66,1],Concrete[71,1],Concrete[76,1]) 
combo16mean = mean(unlist(combo16)) 

#Repeating for (4,2) 
combo17 = list(Concrete[62,1],Concrete[67,1],Concrete[72,1],Concrete[77,1]) 
combo17mean = mean(unlist(combo17)) 

#Repeating for (4,3) 
combo18 = list(Concrete[63,1],Concrete[68,1],Concrete[73,1],Concrete[78,1]) 
combo18mean = mean(unlist(combo18)) 

#Repeating for (4,4) 
combo19 = list(Concrete[64,1],Concrete[69,1],Concrete[74,1],Concrete[79,1]) 
combo19mean = mean(unlist(combo19)) 

#Repeating for (4,5) 
combo20 = list(Concrete[65,1],Concrete[70,1],Concrete[75,1],Concrete[80,1]) 
combo20mean = mean(unlist(combo20)) 

ein paar Notizen über den Code: „s ...“ ist nur meine Matrikelnummer. Ich habe dreifach überprüft, dass ich hier weder den Dateinamen noch das Verzeichnis, in dem es gespeichert ist, falsch gemacht habe. CreataData.r ist nur ein Skript, das uns zur Verfügung gestellt wird. Es generiert die Daten, die für die Erstellung von "Concrete" verwendet werden, basierend auf unserer Matrikelnummer (so dass wir uns nicht blind gegenseitig kopieren, nehme ich an).

Das Problem, das ich mit dem Code habe, ist, dass, wann immer es ausgeführt wird, das Objekt Concrete erstellt wird, wie auch combo1mean, combo2mean und combo3mean. Ich kann jedoch nicht herausfinden, warum der Rest der Objekte nicht erstellt wird.

Ich hatte keinen Erfolg mit dem Ausführen des Skripts im Rgui. Nach dem Ausführen des Skripts wird angezeigt, dass ich überprüft habe, ob Concrete initialisiert wurde, und ich überprüfe, ob das combo4mean und höher ebenfalls initialisiert wurden, aber das tun sie nie. Ich dachte, es hätte vielleicht mit dem Ausführen der falschen Datei zu tun, oder dass ich die Daten nicht richtig gespeichert hatte, aber das Skript enthält definitiv den gesamten Code, und ich erstellte eine neue Datei, um zu sehen, ob das funktionieren würde, aber leider tat es nicht t. Außerdem habe ich eine Einleitung zu R von W. N. Venables, D.M. Smith und das R Core Team, aber nichts hat mir geholfen das herauszufinden.

PS Ich mache das nicht als einen einfachen Weg aus den Hausaufgaben. Ich habe wirklich versucht herauszufinden, was schief läuft, aber ich kann das Problem nicht finden. Ich entschuldige mich auch, wenn die Frage irgendwie falsch ist, oder wenn ich Missverständnisse hatte, ich bin sehr neu in R und versuche mein Bestes, um es zu lernen! Prost im Voraus.

EDIT: Nur für den Fall, dass jemand neugierig ist, habe ich es geschafft, den gleichen Code zu bekommen, um auf einem anderen Computer zu arbeiten, ausgehend von einem leeren Arbeitsbereich. Ich bin mir immer noch nicht ganz sicher, warum es am ersten Computer nicht funktioniert hat, aber danke für die Codevorschläge.

+0

Erhalten Sie Fehlermeldungen? tapply() wäre ein viel schöner Weg, um diese Analyse zu tun –

+0

Hallo sorry, bekomme ich das: "Fehler: Objekt 'combo4mean' nicht gefunden". Es ist der gleiche Fehler für alle Combos von 4 bis 20. Danke, ich bin nicht auf diese Funktion gestoßen, aber ich werde es jetzt lesen! – masiewpao

+1

Hat Ihre dreifache Überprüfung eine Überprüfung dieser Zeile enthalten: 'combo15mean = mean (unlist (combo11))'? –

Antwort

2

Hinzufügen von Code, der Probleme beim Lesen einer Textdatei umgehen sollte. Diese shouls auf jeder R Installation erfolgreich:

Concrete <- read.table(text="TStrength accelerator plasticiser 
1 3.417543   1   1 
2 2.887113   1   2 
3 3.600988   1   3 
4 3.702631   1   4 
5 3.686944   1   5 
6 3.699785   1   1 
7 3.112972   1   2 
8 3.918160   1   3 
9 3.600538   1   4 
10 2.748832   1   5 
11 3.404498   1   1 
12 3.735437   1   2 
13 3.347577   1   3 
14 3.101556   1   4 
15 3.527621   1   5 
16 3.856831   1   1 
17 3.492118   1   2 
18 3.928343   1   3 
19 3.511689   1   4 
20 3.371985   1   5 
21 3.069794   2   1 
22 3.168010   2   2 
23 3.316657   2   3 
24 3.455162   2   4 
25 2.818250   2   5 
26 4.054507   2   1 
27 3.065984   2   2 
28 3.201351   2   3 
29 3.417554   2   4 
30 3.364320   2   5 
31 3.218677   2   1 
32 2.647151   2   2 
33 3.222705   2   3 
34 3.145210   2   4 
35 3.636642   2   5 
36 3.317620   2   1 
37 3.645922   2   2 
38 2.556071   2   3 
39 3.177663   2   4 
40 3.014374   2   5 
41 3.838183   3   1 
42 4.155951   3   2 
43 3.886330   3   3 
44 3.723898   3   4 
45 4.425442   3   5 
46 3.738460   3   1 
47 3.217834   3   2 
48 3.942241   3   3 
49 3.699851   3   4 
50 3.797089   3   5 
51 3.652456   3   1 
52 4.851609   3   2 
53 3.359099   3   3 
54 4.089559   3   4 
55 4.282991   3   5 
56 3.803784   3   1 
57 3.519551   3   2 
58 3.935084   3   3 
59 3.890324   3   4 
60 4.611936   3   5 
61 3.343098   4   1 
62 3.713952   4   2 
63 3.629883   4   3 
64 3.082509   4   4 
65 3.346548   4   5 
66 3.277845   4   1 
67 3.509506   4   2 
68 3.490567   4   3 
69 3.235009   4   4 
70 3.970925   4   5 
71 3.504646   4   1 
72 3.270798   4   2 
73 3.547298   4   3 
74 3.278489   4   4 
75 3.322743   4   5 
76 2.975010   4   1 
77 3.384996   4   2 
78 3.399486   4   3 
79 3.703567   4   4 
80 3.214973   4   5", header=TRUE) 

Dies ist wahrscheinlich macht, was man mit etwa 1/10 (oder weniger) Code (und was noch wichtiger ist keinen Fehler) versuchen:

> means.by.type <- with(Concrete, tapply(TStrength, 
            list(acc=accelerator, plas=plasticiser), 
            FUN=mean)) 
> means.by.type 
    plas 
acc  1  2  3  4  5 
    1 3.594664 3.306910 3.698767 3.479103 3.333845 
    2 3.415150 3.131767 3.074196 3.298897 3.208397 
    3 3.758221 3.936236 3.780689 3.850908 4.279364 
    4 3.275150 3.469813 3.516808 3.324893 3.463797 

Wichtig Sie, vergessen zu bieten str oder dput auf Concrete, so kann nicht wirklich sagen, ob Ihr Problem ist Daten-Vorbereitung oder Codierung.

+0

Haha, ja, mein Code ist grauenhaft ... Ich glaube, ich habe ein Problem damit, wie R auf meinem Computer eingerichtet ist. Ich habe Ihren Code ausprobiert, aber ich habe am Ende der Konsole angegeben, dass ich genau die gleichen Objekte im Arbeitsbereich habe, als wenn ich meinen eigenen Code verwendet hätte. Ich weiß nicht, ob das relevant ist, aber wenn ich versuche, deinen Code auszuführen (ich habe auch die Funktion setwd() hinzugefügt), heißt es: "C: \ Benutzer \ Matthew \ Desktop \ Work \ Engineering \ Quantitative Maths Assignment \ testscript2.R '_ _ignored_ _ "Könnte dies ein Fehler sein, wenn der Arbeitsbereich nicht aktualisiert wird? – masiewpao

+0

Ich habe Code eingefügt, der unabhängig davon laufen sollte, wie verwirrt Sie über die Verwendung von setwd sind. Sie sollten keinen Dateinamen am Ende einer Verzeichnisspezifikation verwenden. Und Windoze-Benutzer müssen Backslash-Verzeichniseinträge verdoppeln (wie in der FAQ 7.8 erläutert). –

+0

Ich habe den Dateinamen nicht angegeben. Das Pfadverzeichnis, das ich angegeben habe, war "C:/Benutzer/Matthew/Desktop/Work/Engineering". Mein vorheriger Kommentar war, was die Konsole zurückgab. Ich habe den Pfad eingerichtet, weil ich den Arbeitsbereich gelöscht habe und ich wollte Concrete initialisieren, als ich Ihr Skript ausgeführt habe – masiewpao