wie kann man eine andere Formel zur Berechnung der Distanzmatrix in die Funktion "dist" einfügen oder
wie kann man auf schnellere Art eine Distanzmatrix erzeugen?
Die Funktion "dist" mit "binary"
Code: Alles auswählen
d <- dist(tabname, method = "binary", diag = FALSE, upper = FALSE)
Für meine Zwecke wäre z.B. (b+c)/(2a+b+c) und andere Formeln besser geeignet.
Folgende Zeilen ermöglichen zwar die Berechung einer Distanzmatrix, allerdings benötigt die Berechnung 5 Stunden für eine 1500x1500 Matrix.
Wenn es einen schnelleren Weg gibt, kann mir bitte jemand den Code zur Verfügung stellen?
Code: Alles auswählen
LW = function (x, y) {
a.11 = sum(x == 1 & y == 1)
b.10 = sum(x == 1 & y == 0)
c.01 = sum(x == 0 & y == 1)
return ((b.10 + c.01) / (2*a.11 + b.10 + c.01))
}
input.variables = tabname
d = matrix(data = NA, nrow = nrow(input.variables), ncol = nrow(input.variables))
for (x in 1:nrow(input.variables)) {
for (y in 1:nrow(input.variables)) {
if (y == x) {
d[x,y] = 0
} else if (x != y) {
d[x,y] = LW(input.variables[x,], input.variables[y,])
}
}
}
colnames(d) = rownames(input.variables)
rownames(d) = rownames(input.variables)
distanzLW <- as.dist(d, diag = TRUE, upper = FALSE)
Anna
Edit: Moderator hat code-Tags eingefügt, bigben