1

我正在尝试使用 sp 包在 R 中创建气泡图。我的数据有很多缺失值(“N/A”),气泡图似乎不喜欢它。

library(sp)
X<-runif(100, min=0, max=1000)
Y<-runif(100, min=0, max=1000)
grade<-c((rnorm(n=50,mean=30, sd=4)), (rep(NA, 50)))
df<-data.frame(X,Y, grade)
coordinates(df)<-~X+Y
bubble(df, "grade", na.rm=TRUE)

当我运行此代码时,我收到一条错误消息“quantile.default(data[, zcol]) 中的错误:如果 'na.rm' 为 FALSE,则不允许缺少值和 NaN”。

我不明白,因为我说过要删除缺失值!我怀疑 sp 处理我错过的缺失值的方法略有不同

4

2 回答 2

4

如果你阅读 help(bubble) 你会发现没有 na.rm 参数。仅仅因为它适用于 lm 和 glm 并不意味着它可以在任何地方工作。请记住,R 是由数百人编写的,并且没有普遍要求遵循 na.rm 始终有效的规则。

请注意,bubble 有一个“...”参数 - 这将捕获您的 'na.rm' 并将其传递给 xyplot - 但它也没有 na.rm 参数。这并不重要,因为气泡中的代码甚至在考虑调用 xyplot 之前就抛出了错误。

子集是答案(如前所述)

于 2011-11-15T10:09:22.630 回答
4

试试这个(因为 na.rm 似乎没有传递给正确的函数):

bubble(df[!is.na(df$grade), ], "grade")

'SpatialPointsDataFrame'-objects 还有一个子集方法:

bubble(subset(df, !is.na(grade)), "grade")
于 2011-11-15T04:13:42.053 回答