0
のうち、私は単純マトリクス持っている:移動平均 - ウィンドウの境界
x <- seq (1:100)
matrix_A = matrix(x, ncol = 10)
matrix_A
を私がやって×3サイズ3
シンプルな機能の実行中のウィンドウですべての値を平均化したいですその次の場合(例えば)i = 1
、j = 1
、私は行列に存在しない値を呼び出していますので、
running_window_v1 <- function(mat.temp){
#Create an empty matrix to store calculations in it
mat.temp1=matrix(NA,ncol = ncol(mat.temp), nrow = nrow(mat.temp))
for (i in (1 : (nrow(mat.temp)))){
for (j in (1 : (ncol(mat.temp)))){
mat.temp1[i,j] = mean (mat.temp[i - 1, j - 1],
mat.temp[i - 1, j],
mat.temp[i- 1, j + 1],
mat.temp[i, j - 1],
mat.temp[i, j],
mat.temp[i, j + 1],
mat.temp[i + 1, j - 1],
mat.temp[i + 1, j],
mat.temp[i +1, j + 1])
}
}
return(mat.temp1)
}
running_window_v1(matrix_A)
このスクリプトの問題は、私はエラーを取得し、明白です。私の仕事のために
running_window_v2 <- function(mat.temp){
#Create an empty matrix to store calculations in it
mat.temp1=matrix(NA,ncol = ncol(mat.temp), nrow = nrow(mat.temp))
for (i in (2 : (nrow(mat.temp)-1))){
for (j in (2 : (ncol(mat.temp)-1))){
mat.temp1[i,j] = mean (mat.temp[i - 1, j - 1],
mat.temp[i - 1, j],
mat.temp[i- 1, j + 1],
mat.temp[i, j - 1],
mat.temp[i, j],
mat.temp[i, j + 1],
mat.temp[i + 1, j - 1],
mat.temp[i + 1, j],
mat.temp[i +1, j + 1])
}
}
return(mat.temp1)
}
> running_window_v2(matrix_A)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] NA NA NA NA NA NA NA NA NA NA
[2,] NA 1 11 21 31 41 51 61 71 NA
[3,] NA 2 12 22 32 42 52 62 72 NA
[4,] NA 3 13 23 33 43 53 63 73 NA
[5,] NA 4 14 24 34 44 54 64 74 NA
[6,] NA 5 15 25 35 45 55 65 75 NA
[7,] NA 6 16 26 36 46 56 66 76 NA
[8,] NA 7 17 27 37 47 57 67 77 NA
[9,] NA 8 18 28 38 48 58 68 78 NA
[10,] NA NA NA NA NA NA NA NA NA NA
、私が情報を失うことはありませんし、私が使用して、もちろん(もエッジを平均化する必要があることは本当に重要です:だから、この関数は、私は次のようにそれを変更する場合にのみ動作します少ない数)。どんな提案がありますか、どのように私のためにうまく動作する機能running_window_v1
を変更することができますか? 可能性のあるエッジごとに条件を追加することができますが、よりエレガントな条件を探しています。
はい、これが答えです。ありがとうございました。 – JerryTheForester