Dies ist mein ursprüngliches Problem, und ich kann nicht eine gute LösungVektorisierung (Array-Zugriff und Gebäude Vorkommen Tabellen) in R
kann sagen, ich habe eine große Vektor finden, die einen Faktor Variable mit K Klassen zum Beispiel enthält, (in der Praxis ein viel viel größerer Vektor) vec=c("A","B","A","D","E","C","A","B")
. (Hier K = 5 ist, in der Praxis viel mehr Klassen)
I definieren die 2 Zeilenvektoren und ein Array
t=c(1,1,3,5,2)
u=c(2,7,6,1,4)
A=rbind(t,u)
A, T, U-Arrays/Vektoren von Indizes
(In der Praxis bedeutet sehr viel größer ist als die, vielleicht Millionen)
so, hat eine N (= 2 in diesem Beispiel) Zeilen, und jede Zeile ist eine Beobachtung
was Ich mag würde haben, als ein Ausgang ein ist Array/Datenrahmen mit N Zeilen und K Spalten, wobei die Anzahl der Vorkommen einer jeder Klasse in dem Vektor durch die Indizes jeder Reihe erzeugten
Daher entspricht die erste Zeile einen Vektor AAAEB die erste Reihe meines neue Array sollte 3 1 0 0 1, die die Vorkommen von A, B, C, D, E
sein, so habe ich versucht, das Problem
myfunction1 <- function(v) {vec[v]}
myfunction2 <- function(v) {table(vec[v])}
beide
vektorisiert werden können, sich zu zersetzen 012.zum Beispiel
> myfunction1(t)
[1] "A" "A" "A" "E" "B"
das ist ok
aber, hier ein erstes Problem:
> myfunction2(t) works, but skips C D which have no occurence
A B E
3 1 1
dann, wenn ich
versuchen> myfunction1(A)
[1] "A" "B" "A" "A" "A" "C" "E" "A" "B" "D"
> myfunction2(A)
A B C D E
5 2 1 1 1
i das Ergebnis zu erhalten für das gesamte Array wird als ein einziger Vektor betrachtet ... nicht was ich wollen !!!
Wenn ich die mapply/sapply/lapply Weg zu gehen, ist es nicht einfach
im Grunde, ich eine Funktion benötigen würde, die aus einem Array einen Vektor von Listen/Listen von Listen aller Elemente in jedem schafft Zeile und gelten Sie dafür. Welche Funktion kann ich nicht finden?
Dann spüre ich, ein Problem in das richtige Format zu konvertieren zurück
Schließlich sollte ich zum ersten Mal erwähnt,
> vec[A]
[1] "A" "B" "A" "A" "A" "C" "E" "A" "B" "D"
gibt einen flachen Vektor nur
Dank für Ihre Hilfe danken !!!
Ich verstehe nicht, warum so eine einfache Aufgabe so schwierig zu tun scheint in R vielleicht gibt es eine eingebaute Funktion, das zu tun?
danke sehr, und ich wusste, sapply/lapply, aber das ist das erste Mal, dass ich sehe, wie anwenden ist nützlich !!! vielen Dank !!!! Ich war auf dem für eine lange Zeit fest –
@ FaguiCurtain 'apply' ist nicht die schnellste, colMeans und Freunde sind viel schneller für ihre spezifischen Aufgaben, aber' apply' kann oft Teil einer flexiblen Lösung für die Matrix-Verarbeitung sein. – lmo
In ähnlicher Weise, nach der Angabe der "Faktor", 'Tabelle (Zeile (A), vec.f [A])' –