行列の2つの要素をすべて順番に抽出し、その結果を行列として返して、計算式の答えを返す方法:ユークリッド距離を計算するために、rの行列行の2つの要素を順番に抽出する
例えば、Iは6列の1つの行行列有する:私は上に第2の反復の列と第1の反復における2つ、3及び4を抽出したい
[,1][,2][,3][,4][,5][,6]
[1,] 2 1 5 5 10 1
を。結果はマトリックスの形でなければなりません。
[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]
私の関心は、ありますデータセンターの距離を計算する方法データ行列のnsは2であり、中心行列は6である。 (データ行列からの距離と中心行列の2列ごとの距離を計算する)。中心行列の各行は3つの中心を有する。
あなたの問題が神秘的な例外であるのか、言葉の言葉(または間にあるもの)を知ることができないのか分からないので、「助けが必要です」という質問はありません。 *あなたが必要とするものを正確に*指定するためにあなたの質問を編集してください。 –
行列の場合、 'matrix(mat、ncol = 2、byrow = TRUE)'です。リストの場合、 'split(mat、rep(seq(length(mat)/ 2)、each = 2))' – alistaire