Ich möchte eine Matrix von latenten Scores in beobachtete Scores transformieren.R: Schnitt mit zeilenspezifischen Brüchen anwenden
Man kann dies tun, indem man Breakpoints/Schwellenwerte auf die ursprüngliche Matrix anwendet und so eine neue kategoriale Matrix erhält. Dadurch ist einfach, zum Beispiel:
#latent variable matrix
true=matrix(c(1.45,2.45,3.45,
0.45,1.45,2.45,
3.45,4.45,5.45)
,ncol=3,byrow=TRUE)
#breaks for the cut function
br=c(-Inf,1,2,3,4,Inf)
#apply cut function to latent variable
observed=apply(true,c(1,2),cut,breaks=br,labels=FALSE,include.lowest=TRUE)
jedoch, was ich tun muß, ist verschiedene Pausen jede Zeile der ursprünglichen Matrix gelte. Diese Schwellenwerte werden in einer Matrix gespeichert:
#matrix of breaks for the cut function
br=matrix(c(-Inf,1,2,3,4,Inf,
-Inf,1.5,2.5,3.5,4.5,Inf,
-Inf,2,3,4,5,Inf)
,ncol=6,byrow=TRUE)
Das heißt, Zeile 1 des br Matrix als Pause für Zeile 1 der wahren Matrix und für diese Zeile dienen sollte nur, Reihe 2 von br sind die Pausen für Zeile 2 von wahr usw.
die folgende Verwendung scheint nicht die Arbeit zu tun:
for (i in 1:nrow(true)) {
observed[i,]=apply(true[i,],c(1,2),cut,breaks=br[i,],labels=FALSE,include.lowest=TRUE)
}
Haben Sie irgendwelche Ideen? Gibt es eine Möglichkeit, die jeweilige Br-Linie auf die jeweilige wahre Linie anzuwenden und sie in der gleichen beobachteten Linie zu speichern?
Vielen Dank im Voraus!
KH
Vielen Dank auch für Ihre Antwort! Funktioniert auch super schnell. – user4507481