-1

我有一个关于使用 PC 轴构建插值地图的问题。我已经使用了该包mapsakima用于绘制地图和插值。这是我的代码:

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部分中,我只能为法国绘制插值地图,而我想为法国、德国、英国、瑞典、意大利和摩洛哥绘制插值图。如何将这些国家添加到法国?

4

2 回答 2

1

您可以尝试在正则表达式中使用 OR 运算符:

toKeep<-grep("France|Germany|UK|Sweden|Italy|Morocco", temp, ignore.case=TRUE)

如果我在这方面是正确的,那么您真的应该更改问题的标题,因为问题似乎与插值过程无关,而是与命名区域的选择有关。

于 2013-01-16T17:59:04.863 回答
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 只返回名称匹配的向量中的位置。

于 2013-01-16T17:37:18.360 回答