如何计算R中两个不同大小矩阵的最近邻点?

时间:2016-03-09 09:08:28

标签: r matlab matrix

我是R的初学者。我有两个2D矩阵,包含经度(第一列)和纬度(第二列)数据。两个矩阵的大小是:dim_o(93264,2),dim_m(174688,2)。我想找到dim_m的最近邻点dim_m。我的意思是参考矩阵是dim_o。我可以用Matlab(MeteoLab Toolbox)用以下方法计算它:

[indAng, disAng]=MLknn(dim_o,dim_m,1, 'Norm-2 ')

我通过以下方式在库(类)中尝试了R中的knn函数:

x.train=dim_o
x.test=dim_m
response_dim=dim_o
dim.knn=knn(train=x.train, test=x.test, cl=response_dim, k=1)

但我得到了错误:

Error in knn(train = x.train, test = x.test, cl = response_dim, k = 1) : 
'train' and 'class' have different lengths

如何计算R中两个不同大小矩阵的最近邻坐标点?感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

对于cl参数,您需要一个与train中的行一样长的向量;你传递的矩阵被转换为矢量两倍的长度。尝试:

dim.knn=knn(train=x.train, test=x.test, cl=seq_len(nrow(train)), k=1)

您也可以使用knn1()并省略k=1参数。还有其他包实现了k-nearest-neighbors,例如FNN