假设我有一个矩阵R
v1 <- c(1, .8, 0, .1, .2)
v2 <- c(.8, 1, .4, 0, .9)
v3 <- c(0, .4, 1, 0, 0)
v4 <- c(.1, 0, 0, 1, .5)
v5 <- c(.2, .9, 0, .5, 1)
R <- matrix(data=c(v1,v2,v3,v4,v5), nrow=5, byrow=TRUE)
我想使用最小-最大函数将值赋给不同的矩阵R2
:
R2 <- matrix(NA, nrow=5, ncol=5)
for(i in 1:nrow(R))
{
for(j in 1:ncol(R))
{
R2[i,j] <- max(min(R[i,1],R[1,j]), min(R[i,2],R[2,j]), min(R[i,3],R[3,j]), min(R[i,4],R[4,j]), min(R[i,5],R[5,j]))
}
}
这很好用,但是当矩阵大小改变时,我必须修改R2
的赋值.如何将最小-最大函数推广到任意大小的矩阵?例如,我想要如下所示的函数调用:
# to work, nrow(M1) == ncol(M2)
map_relation <- function(M1, M2)
{
result <- matrix(NA, nrow=nrow(M1), ncol=ncol(M2))
for(i in 1:nrow(M1))
{
max_val <- 0
for(j in 1:ncol(M2))
{
# HOW CAN i MODIFY THIS TO APPLY GENERALLY TO ANY SIZED MATRIX?
result[i,j] <- max(min(M1[i,1],M2[1,j]), min(M1[i,2],M2[2,j]), min(M1[i,3],M2[3,j]), min(M1[i,4],M2[4,j]), min(M1[i,5],M2[5,j]))
}
}
return(result)
}