【发布时间】:2018-06-10 08:42:16
【问题描述】:
如何按顺序提取矩阵中的每两个元素并将结果作为矩阵返回,以便我可以将答案输入公式中进行计算:
例如,我有一个 6 列的单行矩阵:
[,1][,2][,3][,4][,5][,6]
[1,] 2 1 5 5 10 1
我想在第一次迭代中提取第 1 列和第 2 列,在第二次迭代中提取第 3 列和第 4 列,依此类推。结果必须是矩阵的形式。
[1,] 2 1
[2,] 5 5
[3,] 10 1
我的原始代码:
data <- matrix(c(1,1,1,2,2,1,2,2,5,5,5,6,10,1,10,2,11,1,11,2), ncol = 2)
中心矩阵:
[,1][,2][,3][,4][,5][,6]
[1,] 2 1 5 5 10 1
[2,] 1 1 2 1 10 1
[3,] 5 5 5 6 11 2
[4,] 2 2 5 5 10 1
[5,] 2 1 5 6 5 5
[6,] 2 2 5 5 11 1
[7,] 2 1 5 5 10 1
[8,] 1 1 5 6 11 1
[9,] 2 1 5 5 10 1
[10,] 5 6 11 1 10 2
objCentroidDist <- function(data, centers) {
resultMatrix <- matrix(NA, nrow=dim(data)[1], ncol=dim(centers)[1])
for(i in 1:nrow(centers)) {
resultMatrix [,i] <- sqrt(rowSums(t(t(data)-centers[i, ])^2))
}
resultMatrix
}
objCentroidDist(data,centers)
我希望结果矩阵如下:
[1,][,2][,3]
[1,]
[2,]
[3,]
[4,]
[5,]
[7,]
[8,]
[9,]
[10]
我关心的是,如果数据矩阵的维度为 2,中心矩阵为 6,如何计算数据中心距离。 (计算与数据矩阵和中心矩阵每两列的距离)。中心矩阵的每一行都有三个中心。
【问题讨论】:
-
“我需要帮助”不是问题,因为我无法判断您的问题是神秘异常还是不知道该语言的单词(或介于两者之间)。请edit您的问题准确地说明您需要什么帮助。
-
对于矩阵,
matrix(mat, ncol = 2, byrow = TRUE)。如需列表,请split(mat, rep(seq(length(mat) / 2), each = 2))
标签: r genetic-algorithm euclidean-distance