所以我理解mapply将按元素顺序遍历一个数组(或一系列数组) - 我想知道是否有办法阻止它对某些参数执行此操作....让我进一步解释
我有一组数据点,X和Y坐标... X1 X2 ... Xn和Y1 Y2 ... Yn 我有一组中心,X和Y坐标... Cx1,Cx2,Cx3和Cy1,Cy2,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,Cy2)
assignCentre(x3,y3,Cx3,Cy3)
我想要它运行的是:
assignCentre(x1,y1,(Cx1,Cx2,Cx3),(Cy1,Cy2,Cy3))
assignCentre(x2,y2,(Cx1,Cx2,Cx3),(Cy1,Cy2,Cy3))
assignCentre(x3,y3,(Cx1,Cx2,Cx3),(Cy1,Cy2,Cy3))
...
...
assignCentre(xn,yn,(Cx1,Cx2,Cx3),(Cy1,Cy2,Cy3))
任何想法如何我可以将macoly剥离xcoords和ycoords,但只留下中心线? - 或者我应该只使用for循环?
答案 0 :(得分:3)
如果您不想迭代参数,请将它们粘贴在MoreArgs=
参数
mapply(assignCentre, x, y,
MoreArgs=list(xcentres=xcentres, ycentres=ycentres))