【问题标题】:Leaflet for R: dealing with missing valuesR 传单:处理缺失值
【发布时间】:2015-10-23 16:25:24
【问题描述】:

我是 Leaflet 的新手,想知道它如何处理缺失值。假设我有一个包含许多列的数据框,包含坐标和其他属性。理想情况下,如果addCircleMarkers 函数遇到缺少纬度或经度值,它将跳过它并且不绘制该行的坐标。但是,我遇到的情况是,如果缺少一个纬度/经度值,则根本不会绘制任何点。

我可以想象在我的数据中逐行检查任何 NA,并且只有在没有 NA 的情况下才进行绘图。但我觉得 Leaflet 会有一种内置的方法来处理这个问题。有人知道吗?

编辑:既然有人问,这是我添加标记的代码(使用 magrittr %>% 运算符):

addCircleMarkers(~lon, ~lat, stroke=F,
      fillOpacity = .6, color = coloring(), radius=radii) %>%

【问题讨论】:

  • 您能否提供一个示例来说明您是如何使用 addCircleMarkers 的?我的下意识反应是说只使用 subset() 提供数据的子集并删除带有 NA 的行,但我不确定这是否适用于您使用 Leaflet 函数的方式。
  • 我理解这个问题,但您可以通过df[complete.cases(df), ] 快​​速解决问题
  • @ScottChamberlain 这很好用,除非我有其他行具有 NA 值。有没有办法使用complete.cases 仅删除缺少纬度/经度的行?

标签: r leaflet na


【解决方案1】:

您可以执行类似的操作来测试 lat 和 long 列

(df <- data.frame(a = c(1, NA, 4, NA), b = c(1, 2, 3, 5)))

   a b
1  1 1
2 NA 2
3  4 3
4 NA 5

bools <- apply(cbind(complete.cases(df$a), complete.cases(df$b)), 1, all)
df[bools, ]

  a b
1 1 1
3 4 3

【讨论】:

  • 太好了!我这样做了,然后将结果保存回df 并在整个映射过程中使用它(当我制作初始地图和所有后续的leafletProxy 时)。谢谢!
  • 太棒了。仅供参考,他们知道这个问题,也许很快就会修复github.com/rstudio/leaflet/issues/71 Leaflet.js 不喜欢丢失数据,但他们可以在 R 端删除它们
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-29
  • 1970-01-01
  • 1970-01-01
  • 2021-08-10
  • 2021-12-23
  • 2014-04-27
  • 1970-01-01
相关资源
最近更新 更多