So definieren Sie eine stückweise Funktion im R
Möchte ich definieren Sie eine stückweise Funktion mit R, allerdings ist mein R-code schief geht. Jede Anregung ist willkommen.
x<-seq(-5, 5, by=0.01)
for (x in -5:5){
if (-0.326 < x < 0.652) fx<- 0.632
else if (-1.793<x<-1.304) fx<- 0.454
else if (1.630<x<2.119) fx<-0.227
else fx<- 0 }
Es könnte sich lohnen zu klären, dass dieses Beispiel ist eine Schritt-Funktion, eine spezielle Klasse von stückweisen Funktionen. Für Schritt Funktionen,
stepfun
(erwähnt von @KenWIlliams) und approxfun
beide funktionieren gut. approxfun
beherbergt auch stückweise-lineare Funktionen (aber nicht allgemein stückweise Funktionen).InformationsquelleAutor Frank Wang | 2012-01-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Oder verwenden Sie
ifelse
.InformationsquelleAutor Roman Luštrik
Versuchen Sie dies:
InformationsquelleAutor G. Grothendieck
Ich bin ein wenig spät zur party, aber ich konnte nicht widerstehen, die Entsendung ein paar mehr Möglichkeiten, dies zu tun. Beide profitieren von R-Funktionen für das arbeiten mit Intervallen auf der reellen Achse.
Wenn Sie definieren Ihre Schnittpunkte und-Funktion Werte in den Vektoren
cuts
undvals
etwa so:Dann können Sie
findInterval
effizient nachschlagen der Werte vonx
in Ihrem cutpoints:Wenn diese Funktion benötigt zu tun ausgefalleneren Sachen, als nur zu schauen, bis ein konstanter Wert ist, können Sie Ausdrücke oder Funktionen oder was auch immer Sie wollen in
vals
, evtl. mit einerlist
wenn Sie wollen.Alternativ, da diese Funktion eine step-Funktion, die Sie verwenden können
stepfun
:Dann können Sie auch das schöne Plotten Methoden der
stepfun
zu.InformationsquelleAutor Ken Williams
Vielleicht, wenn Sie Spalten die Bedingungen
EDIT: Das scheint nicht alles zu sein, hier ist ein anderer Ansatz:
Ihr Ansatz funktioniert. Großer Dank.
Seien Sie vorsichtig mit denen bitweise
&
. Es ist kein problem in diesem Fall aber besser stick mit&&
, und ebenso||
statt|
.Dies ist R, nicht c++ 🙂 . Es gibt einen Unterschied zwischen
&
und&&
, aber weder ist ein bitweiser operator.Danke, gut zu wissen! Ich denke, ich werde schauen, dass wieder auf. EDIT: Ah, ich sehe. Man vektorisiert, während die andere nicht.
InformationsquelleAutor Karsten W.
Aber auch eine andere Möglichkeit, diese Zeit mit
cut
.InformationsquelleAutor Richie Cotton
Es sei denn, Sie haben unterschiedliche cutoff-Punkte, die ich benutzen würde
switch
. Hier ist ein Beispiel, w/Vereinfachtes cut-Werte.Schleife über x.
InformationsquelleAutor Carl Witthoft