Я осмотрел StackOverflow и другие форумы, чтобы найти решение, но мне еще предстоит найти решение, которое просто использует Base-R - что мне и нужно для этого использовать.
Я пытаюсь максимизировать диагональ в матрице NxN за строкой, поэтому максимальное значение из этой строки находится на диагонали (надеюсь, это имеет смысл - особенно в контексте кластерного анализа)
До сих пор я пытался жестко запрограммировать это, но это кажется контрпродуктивным - это было сделано путем попытки создать функцию «подкачки», используя цикл for вниз по столбцам и поменяв местами необходимые записи.то есть в строке 1: 1,3,4,7 -> 7,3,4,1 строка 2: 4,10,14,22 -> 4,22,14,10 и т. д.
Здесьпример матрицы, которую я бы попробовал использовать:
CM <- table(expected, predicted)
CM
1 2 3 4
A 11 1 0 66
B 0 22 77 18
C 10 49 34 48
D 0 46 31 49
#Desired:
CM
1 2 3 4
A 66 1 0 11 #max 66
B 0 77 22 18 #max 77
C 10 34 49 48 #max 49
D 0 46 31 49 #max 49
Вот выдержка из (ужасной) функции подкачки, которая не работала.
swap <- function(x,y){
a = c() #create an empty vector
a <- x #assign x value to a (where x = diagonal location)
x <- y #assign y to x (where y = maximum value
y <- a #re-assign a value back to y
}
выше показывает, как я быожидайте результатов - я надеялся, что кто-нибудь может предоставить мне какой-нибудь полезный псевдокод или сообщить мне, если я что-то упустил.
Извините, если это простой или очевидный вопрос!