2017-05-04 461 views
2

所以我明白,mapply將以元素順序逐步通過一個數組(或一系列數組) - 我想知道是否有辦法阻止它在某些參數上執行此操作。讓我進一步解釋與Mapply掙扎

我有一組數據點,X和Y座標... X1 X2 ... Xn和Y1 Y2 ... Yn 我有一組中心,X座標和Y座標... Cx1,Cx2,Cx3和CY1中,Cy,Cy3的 對於每個數據點,我想找出哪個「中心」,它是最接近...(集羣匹配) 道歉利用中心的英語版

我有一個工作函數需要X座標和Y座標以及中心和距離以及最近的中心的距離

assignCentre <- function (x1, y1, xcentres, ycentres) { 
    centredists <- mapply(pointDistance, x1, y1, xcentres, ycentres) 
    nearcentre <- which(centredists == min(centredists))[1] 
    return(list(nearcentre, centredists[nearcentre])) 
} 

pointDistance <- function (x1, y1, x2, y2) { 
    xdist <- (x2 - x1)^2 
    ydist <- (y2 - y1)^2 
    return(sqrt(xdist + ydist)) 
} 

這裏的問題,如果我嘗試以下方法: mapply(assignCentre,xcoords,ycoords,xcentres,ycentres) 因爲基本上它運行

assignCentre(X1,Y1,CX1,CY1)

失敗

assignCentre(x2,y2,CX2中,Cy)

assignCentre(X3,Y3,CX3的Cy3)

什麼,我希望它運行的是:

assignCentre(X1,Y1,(CX1,CX2,CX3),(CY1中,Cy,Cy3標記))

assignCentre(X2,Y2,(CX1,CX2,CX3),(CY1中,Cy,Cy3標記))

assignCentre(X3,Y3,(CX1,CX2,CX3),(CY1中,Cy,Cy3的))

...

...

assignCentre(XN,YN, (Cx1,Cx2,Cx3),(Cy1,Cy2,Cy3))

任何想法,我可以得到mapply剝離xcoords和ycoords,但離開中心座標? - 或者我應該只使用for循環?

回答

3

如果你不想遍歷參數,他們堅持在MoreArgs=參數

mapply(assignCentre, x, y, 
    MoreArgs=list(xcentres=xcentres, ycentres=ycentres))