【问题标题】:Vector length mismatch in Swiss Language Map瑞士语言地图中的向量长度不匹配
【发布时间】:2015-06-22 19:59:33
【问题描述】:

我正在学习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

请指导

【问题讨论】:

    标签: r dictionary geomap


    【解决方案1】:

    似乎应该从第三行末尾的列表中删除一个“法语”条目。我不知道这是示例中的错误还是地图数据的更改(以前在http://gadm.org/data/rda/CHE_adm1.RData,现在在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")
    

    【讨论】:

    • 要获得边界,你可以做library(raster); g &lt;- getData('GADM', level=1, country='CHE')
    • @RobertH 当我尝试这个时,我得到Error in substr(path, nchar(path), nchar(path)) : 4 arguments passed to .Internal(nchar) which requires 3
    • @RobertH 我升级到 R 3.2.1,现在它正在处理。试图确定如何显示g的值,以确定边界
    • @Sohni Mahiwal 显示 g,输入 g 以获取元数据,plot(g) 以查看边界
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      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')
      

      【讨论】:

        猜你喜欢
        • 2013-07-19
        • 1970-01-01
        • 2012-10-18
        • 2019-10-05
        • 1970-01-01
        • 2012-04-20
        • 1970-01-01
        • 1970-01-01
        • 2022-01-10
        相关资源
        最近更新 更多