2017-04-24 7 views
-1

gruppieren Ich bin neu in R-Programmierung. Für meine Kursarbeit implementiere ich das Empfehlungssystem mit R. Ich konvertiere bereits die Datentabelle in die Matrix und verarbeite SVD = udv mit Hilfe von irlba funtion. Jetzt habe ich die folgende Matrix u.Ich muss den Matrix-Wert basierend auf Vorzeichen-Kombination (+ -)

svd sign matrix of u

Jetzt muss ich sie auf der Grundlage ihrer Zeichen klassifizieren. Zum Beispiel sind hier die ersten drei eine Kombination von (-, -) und dann ist letzter (-, -), so dass sie alle in derselben Gemeinschaft sein müssen. Dann sind 4. und 5. (-, +), sie sind in derselben Gemeinschaft und so weiter.

Antwort

1

Sie können sign für jede Spalte verwenden und sie in Ihre Kombinationszeichenfolge einfügen. Dann teilen Sie die Matrix in jeder Kombination

set.seed(0L) 
mat <- matrix(rnorm(20), ncol=2) 
split(data.frame(mat), apply(mat, 1, function(x) paste(sign(x), collapse=", "))) 
#> $`-1, -1` 
#>   X1   X2 
#> 2 -0.3262334 -0.7990092 
#> 6 -1.5399500 -0.4115108 
#> 8 -0.2947204 -0.8919211 
#> 
#> $`-1, 1` 
#>    X1  X2 
#> 7 -0.928567035 0.2522234 
#> 9 -0.005767173 0.4356833 
#> 
#> $`1, -1` 
#>   X1   X2 
#> 3 1.3297993 -1.1476570 
#> 4 1.2724293 -0.2894616 
#> 5 0.4146414 -0.2992151 
#> 10 2.4046534 -1.2375384 
#> 
#> $`1, 1` 
#>   X1  X2 
#> 1 1.262954 0.7635935 
+0

Danke. Es ist sehr hilfreich. – Anu

+0

Ich habe noch eine Frage in diesem Ergebnis. Nachdem wir das Ergebnis in mehrere Gruppen aufgeteilt haben, muss ich den Zeilennamen jeder Gruppe als numerisch sammeln und speichern (zum speichern hoffe ich, dass diese Liste besser ist). Zum Beispiel müssen (2,6,8), (7,9), (3,4,5,10), (1) im Auge behalten werden. Bitte hilf mir, das zu lösen. – Anu

+0

Sie können lapply (result, rownames) verwenden, wobei result die Ausgabe von split – chinsoon12

1

Eine weitere Option ist

lapply(split(seq_len(nrow(mat)), 
    interaction(as.data.frame(sign(mat)))), function(i) mat[i,, drop = FALSE]) 
+0

Hallo, das macht auch den gleichen Prozess.Vielen Dank für Ihre Antwort. – Anu

Verwandte Themen