You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中计算SUD中心到医院距离时遇维度不匹配错误求解决

问题原因

你遇到的错误核心是维度不匹配:

  • st_distance(alameda_SUDs_centers, alameda_mediCal_hospitals)返回的是32行×11列的矩阵(对应32个SUD中心、11家医院)
  • apply(alameda_distances,1,min)是按行取最小值,得到的是每个SUD中心到最近医院的距离,共32个值
  • 但你试图把这32个值赋值给只有11行的alameda_mediCal_hospitals$distance,维度不匹配导致报错
解决方案

分两种需求场景处理:

场景1:给每家医院添加「最近SUD中心的距离」

如果你的目标是计算每家医院到最近SUD中心的距离,需要按列取最小值(矩阵的列对应医院):

alameda_distances <- st_distance(alameda_SUDs_centers, alameda_mediCal_hospitals) * 0.000621371
# 按列取最小,得到11个值(对应11家医院)
alameda_mediCal_hospitals$distance <- as.vector(apply(alameda_distances, 2, min))

场景2:给每个SUD中心添加「最近医疗补助医院的距离」

如果你的目标是计算每个SUD中心到最近医院的距离,应该把距离列赋值给alameda_SUDs_centers而不是医院数据框:

alameda_distances <- st_distance(alameda_SUDs_centers, alameda_mediCal_hospitals) * 0.000621371
# 按行取最小,得到32个值(对应32个SUD中心)
alameda_SUDs_centers$distance <- as.vector(apply(alameda_distances, 1, min))
额外优化建议

用sf原生的st_nearest_feature可以更高效地计算最近距离,避免手动处理矩阵:

# 给SUD中心加最近医院距离
nearest_hosp_idx <- st_nearest_feature(alameda_SUDs_centers, alameda_mediCal_hospitals)
alameda_SUDs_centers$distance <- st_distance(alameda_SUDs_centers, alameda_mediCal_hospitals[nearest_hosp_idx,], by_element = TRUE) * 0.000621371

# 给医院加最近SUD中心距离
nearest_sud_idx <- st_nearest_feature(alameda_mediCal_hospitals, alameda_SUDs_centers)
alameda_mediCal_hospitals$distance <- st_distance(alameda_mediCal_hospitals, alameda_SUDs_centers[nearest_sud_idx,], by_element = TRUE) * 0.000621371

内容的提问来源于stack exchange,提问作者GLowe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 22:55:10