瑞士语言地图中的矢量长度不匹配

Vector length mismatch in Swiss Language Map

我在学习this website

不明白some things:

con <- url("http://biogeo.ucdavis.edu/data/gadm2/R/CHE_adm1.RData")
print(load(con))

输出为

[1] "gadm"

代码通过关闭连接继续

close(con)

然后我执行

language <- c("german", "german", "german","german",
 "german","german","french", "french",
 "german","german","french", "french", 
 "german", "french","german","german",
 "german","german","german", "german",
 "german","italian","german","french",
 "french","german","german")

老实说,我不知道这个人是怎么想出这个矩阵的,但后来我得到了错误

Error in `[[<-.data.frame`(`*tmp*`, name, value = c(2L, 2L, 2L, 2L, 2L,  : 
  replacement has 27 rows, data has 26

请指导

似乎应该从第三行末尾的列表中删除一个 "french" 条目。我不知道这是示例中的错误还是地图数据的更改(以前位于 http://gadm.org/data/rda/CHE_adm1.RData , now at http://biogeo.ucdavis.edu/data/gadm2/R/CHE_adm1.RData)。 在任何情况下,我都可以使用以下方法复制网站上显示的地图:

language <- c("german", "german", "german","german",
          "german","german","french", "french",
          "german","german","french",  
          "german", "french","german","german",
          "german","german","german", "german",
          "german","italian","german","french",
          "french","german","german")

如果您查看您提供的 link 中的评论部分,作者提到他对 语言 向量进行了硬编码。 http://blog.revolutionanalytics.com/2009/10/geographic-maps-in-r.html

关于错误,很简单。它通知 language 向量有 27 个条目,而只有 26 个瑞士语言区域(这可能来自 gadm 包 AFAIK)。因此,尝试从 language 向量中删除一个条目。

RHertel 解决了这个问题,但这是我的处理方法,作为背景可能有用;

library(raster)
g <- getData('GADM', level=1, country='CHE')

# create a data.frame of cantons and language
# set them to German (a common one)
lang <- data.frame(g$NAME_1, lang='German')
lang

# now fix the entries that need to be French or Italian
# and merge back to g (a SpatialPolygonsDataFrame) 
g <- merge(g, lang, by='NAME_1')

spplot(g, 'lang')