我是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中两个不同大小矩阵的最近邻坐标点?感谢您的帮助!
答案 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
。