我有一个关于使用PC轴构建插值地图的问题。我使用了包maps
和akima
来绘制地图和插值。这是我的代码:
map<-read.table("RACES_GEOREF.txt", row.names=1)
x<-as.numeric(map[,1])
y<-as.numeric(map[,2])
z<-as.numeric(bca.res$li[,1])
x0<-seq(min(map[,1]), max(map[,1]), le=500)
y0<-seq(min(map[,2]), max(map[,2]),le=500)
z.hat<-interp(x, y, z, xo=x0, yo=y0, linear=FALSE, extrap=TRUE)
myGrid<-expand.grid(x0,y0)
temp<-map.where(database="world", x=myGrid[,1], y=myGrid[,2])
toKeep<-grep("France",temp, ignore.case=TRUE)
toRemove<-setdiff(1:length(z.hat$z), toKeep)
z.hat$z[toRemove]<-NA
image(z.hat)
map(add=TRUE, lwd=3)
contour(temp, add=TRUE)
dev.off()
在grep
部分,我只能绘制法国的插值地图,而我想在法国,德国,英国,瑞典,意大利和摩洛哥进行。我如何将这些国家添加到法国?
答案 0 :(得分:1)
您可以尝试在正则表达式中使用OR运算符:
toKeep<-grep("France|Germany|UK|Sweden|Italy|Morocco", temp, ignore.case=TRUE)
如果我在这方面是正确的,你真的应该更改问题的标题,因为问题似乎不是关于插值过程而是选择命名区域。
答案 1 :(得分:0)
我相信用grep你需要做这样的事情:
toKeep<-c(grep("France",temp, ignore.case=TRUE),grep("Germany",temp, ignore.case=TRUE),grep("UK",temp, ignore.case=TRUE),grep("Sweden",temp, ignore.case=TRUE),grep("Italy",temp, ignore.case=TRUE),grep("Morocco",temp, ignore.case=TRUE))
因为grep只返回名称匹配的向量中的位置。