gpt4 book ai didi

r - 与 Mapply 斗争

转载 作者:行者123 更新时间:2023-12-04 02:05:28 24 4
gpt4 key购买 nike

所以我知道 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))

我有什么想法可以让 mapply 剥离 xcoords 和 ycoords 但单独留下中心坐标? – 或者我应该只使用 for 循环?

最佳答案

如果您不想遍历参数,请将它们粘贴在 MoreArgs= 参数中

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

关于r - 与 Mapply 斗争,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43789898/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com