我正在尝试使用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有一个稍微不同的方法来处理我错过的缺失值
答案 0 :(得分:4)
试试这个(因为na.rm似乎没有传递给正确的函数):
bubble(df[!is.na(df$grade), ], "grade")
“SpatialPointsDataFrame”对象还有一个子集方法:
bubble(subset(df, !is.na(grade)), "grade")
答案 1 :(得分:4)
如果您阅读帮助(气泡),您会看到没有na.rm参数。仅仅因为它适用于lm和glm并不意味着它可以在任何地方工作。请记住,R是由数百人编写的,并且没有普遍要求遵循na.rm始终有效的规则。
请注意,bubble有一个“...”参数 - 这将捕获你的'na.rm'并将其传递给xyplot - 但是它也没有na.rm参数。这并不重要,因为在它甚至考虑调用xyplot之前,错误是由泡沫中的代码引发的。
子集就是答案(已经解释过了)