2017-05-04 10 views
2

mapplyは配列の配列(または一連の配列)を要素の順番通りに処理することを理解しています - いくつかの引数でこれを停止する方法があるかどうかは疑問でした。私はさらに説明しましょうMapplyとの闘い

私は、X座標とY座標... X1 X2 ... XnとY1 Y2 ... Yn 私はX座標とY座標を持っています... Cx1、Cx2、Cx3そしてCY1、Cy 2は、私はそれがに最も近い「中央」を知りたい各データポイントの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 2は)

assignCentre(X3、Y3、CX3、Cy3の)

私はそれを実行することです:

assignCentre(X1、Y1、(Cx1乃至、CX2、CX3)、(CY1、Cy 2は、Cy3の))

assignCentre(X2、Y2、(Cx1乃至、CX2、CX3)、(CY1、Cy 2は、Cy3の))

assignCentre(X3、Y3、(Cx1乃至、CX2、CX3)、(CY1、Cy 2は、Cy3の))

...

...

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

どのようにして私はxcoordとycoordsをはぎ取ってセンターココードだけを残すことができますか? - または私はforループを使うべきですか?

答えて

3

あなたはパラメータを反復処理したくない場合は、MoreArgs=パラメータでそれらを固執

mapply(assignCentre, x, y, 
    MoreArgs=list(xcentres=xcentres, ycentres=ycentres)) 
関連する問題