Inwieweit wenden Sie eine Funktion auf ausgewählte Elemente in einem [großen] Vektor an

8

Ich habe einen Vektor v

%Vor%

Ich möchte die Funktion myfn

anwenden %Vor%

zu ausgewählten Elementen, deren Indizes idx

sind %Vor%

Ich habe gesehen modifiziere einen Teil eines Vektors in Clojure? und es ist nicht genau das, was ich brauche.

Wie Sie es in MATLAB tun

%Vor%     
Ali 20.11.2011, 02:24
quelle

4 Antworten

9

Vektoren in clojure sind assoziativ, also können Sie so etwas tun: (reduce #(update-in %1 [%2] myfn) v idx)

    
mange 20.11.2011, 02:38
quelle
3

Aktualisiert, weil ich die Frage falsch interpretiert habe.

Hier ist eine andere Lösung:

%Vor%

Das heißt, erstellen Sie eine Argumentliste von Index- / Neuwert-Paaren zu assoc . Ich denke, manges Lösungen sind wahrscheinlich besser.

Ursprüngliche, falsche Lösung

Vergessen Sie nicht, dass der Vektor v selbst eine Funktion seiner Indizes ist. Also:

%Vor%

oder:

%Vor%

oder:

%Vor%

Ich bin mir sicher, dass es auch eine sehr clevere Antwort mit juxt :)

gibt     
Dave Ray 20.11.2011 05:02
quelle
2

Sie erwähnen "einen [großen] Vektor", also interessieren Sie sich für Leistung? Vielleicht möchten Sie etwas über Transienten herausfinden:

%Vor%

Wenn Sie einen Looping-Stil bevorzugen, macht dies das Gleiche:

%Vor%     
Jouni K. Seppänen 20.11.2011 08:25
quelle
0
%Vor%     
BLUEPIXY 20.11.2011 09:38
quelle

Tags und Links