R 选择点的邻域并将其转换为向量

R 选择点的邻域并将其转换为向量,r,image-processing,machine-learning,R,Image Processing,Machine Learning,我有一个数据,实际上是一个256 x 256矩阵形式的图像。我想选择点的邻域并将其转换为向量。然后应用一些聚类算法。我是新手,需要一些代码方面的帮助。我已经创建了一个玩具数据集来显示我想做什么 d<- matrix(rbinom(8*8,1,0.5),8,8) d [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [1,] 0 0 1 0 0 0 0 1 [2,] 1 1 1 0

我有一个数据,实际上是一个256 x 256矩阵形式的图像。我想选择点的邻域并将其转换为向量。然后应用一些聚类算法。我是新手,需要一些代码方面的帮助。我已经创建了一个玩具数据集来显示我想做什么

d<- matrix(rbinom(8*8,1,0.5),8,8)
d
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,]    0    0    1    0    0    0    0    1
[2,]    1    1    1    0    1    1    1    1
[3,]    1    1    1    1    0    1    1    1
[4,]    0    0    1    1    1    1    1    0
[5,]    0    0    1    0    0    1    1    1
[6,]    1    0    0    0    0    0    1    0
[7,]    0    0    1    1    0    1    1    0
[8,]    1    1    0    1    1    0    1    0

现在将其转换为R^9中的向量,作为v1=(0,0,1,1,1,1,1,1)。然后,我想对不在矩阵边界上的所有点(即第一行和最后一行以及第一列和最后一列)执行此操作。我不知道如何进行,将感谢任何帮助。提前感谢。

您可以继续执行嵌套的
for
循环:

ddim <- dim(d) - 1
vect <- list()
for(i in seq(ddim[1])[-1]) {
    for(j in seq(ddim[2])[-1]) {
        vect <- c(vect, list(c(d[(i-1):(i+1), (j-1):(j+1)])))
    }
}

ddim谢谢。但我想把vect存储在矩阵中。我该怎么做?您可以添加
do.call(cbind,vect)
ddim <- dim(d) - 1
vect <- list()
for(i in seq(ddim[1])[-1]) {
    for(j in seq(ddim[2])[-1]) {
        vect <- c(vect, list(c(d[(i-1):(i+1), (j-1):(j+1)])))
    }
}