code effizienter programmieren
Verfasst: Mo Okt 02, 2017 6:35 pm
Schönen gute Abend,
ich habe mehrere if-Bedingungen und darüber eine for-Schleife laufen. Es funktioniert alles und die Schleifen machen auch das, was sie machen sollen. Leider dauert das ganze lange, da ich die for-Schleife von 1:335000 laufen lassen.
Meine Frage wäre, kann ich den obigen Code vereinfache bzw. effizienter schreiben, damit das Programm schneller läuft. Der Plan hinter meinen Zeilen ist folgender: die Daten in ns zeigen die Mengen an, die Werte in nsM ist der Melder, der anschlägt, sobald ns gemessen wird (besteht aus 0 und 1). Jetzt passiert es öfter, dass der Melder anspringt (nsM = 1), jedoch nichts gemessen wird. Dieses Anspringen des Melders möchte ich gerne bei der Auswertung mitberücksichtigen und deshalb kombiniere ich ns und nsM. bei der variable "neu" handelt es sich um die Kombination der beiden unter den oben angebenden Bedingungen.
danke vielmals
glg. J
ich habe mehrere if-Bedingungen und darüber eine for-Schleife laufen. Es funktioniert alles und die Schleifen machen auch das, was sie machen sollen. Leider dauert das ganze lange, da ich die for-Schleife von 1:335000 laufen lassen.
Code: Alles auswählen
str(d)
...
$ ns: Factor w/ 4 levels "k", "m",..: 4 4 4 4 4 4 4 4 4 4 ...
$ nsM: Factor w/ 2 levels "N","Y": 1 1 1 1 1 1 1 1 1 1 ...
...
for (i in 1: length(d$ns)){
if (d$ns[i] == "N" & d$nsM[i] == "N"){d$neu[i] = "N"}
else if (d$ns[i] == "N" & d$nsM[i] == "1"){d$neu[i] = "Y"}
else if (d$ns[i] == "l" & d$nsM[i] == "1") {d$neu[i] = "l"}
else if (d$ns[i] == "m" & d$nsM[i] == "1") {d$neu[i] = "m"}
else if (d$ns[i] == "k" & d$nsM[i] == "1") {d$neu[i] = "k"} }
str(d)
...
$ ns: Factor w/ 4 levels "k", "m",..: 4 4 4 4 4 4 4 4 4 4 ...
$ nsM: Factor w/ 2 levels "N","Y": 1 1 1 1 1 1 1 1 1 1 ...
...
$ neu: chr "N" "N" "N" "N" ...
danke vielmals
glg. J