R:带有 geom_map 的 ggplot2 返回“x 和单位必须具有长度 > 0”错误,尽管值已转换为因子

2023-12-03

我正在开发一个原始的闪亮应用程序,它将映射来自苏格兰开放数据项目。我制定了 SPARQL 查询,用于生成类似于下面提供的摘录的数据框

dz_label overall.quantiles
S010001 8
S010002 9

我有强化的形状文件,我正在尝试使用以下代码来映射它们:

ggplot() + 
      geom_map(data = dta.simd, aes(map_id = dz_label, 
                                    fill = as.factor(dta.simd$overall.quantiles)), 
               map = shps.dzs2001) +
      geom_path(data = shps.dzs2001, aes(x=long, y=lat, group=group), 
                colour="black", size=0.25)

代码返回错误

Error: 'x' and 'units' must have length > 0

如果我理解类似的讨论(1, 2),问题与值类相关。然而,我的理解是,as.factor()应该解决这个问题,但显然情况并非如此。下面包含该应用程序的完整代码。当然,我会很感激任何帮助。

Server

# Libs
require(shiny); require(SPARQL); require(ggplot2); require(rgeos); require(maptools);
require(RCurl)

# Server function
shinyServer(function(input, output) {

  # Source the data

  ## Source the SPARQL data
  ### Define endpoint URL.
  endpoint <- "http://data.opendatascotland.org/sparql.csv"

  ### Create Query and download table for the SIMD rank
  query.simd <- "PREFIX stats: <http://statistics.data.gov.uk/id/statistical-geography/>
      PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
      PREFIX simd: <http://data.opendatascotland.org/def/simd/>
      PREFIX cube: <http://purl.org/linked-data/cube#>
      PREFIX stats_dim: <http://data.opendatascotland.org/def/statistical-dimensions/>
      PREFIX year: <http://reference.data.gov.uk/id/year/>

      SELECT DISTINCT
      ?dz_label
      ?overall_rank
      ?income_deprivation_rank
      ?employment_deprivation_rank
      ?health_deprivation_rank
      ?education_deprivation_rank
      ?access_deprivation_rank
      ?housing_deprivation_rank
      ?crime_deprivation_rank

      WHERE {

      GRAPH <http://data.opendatascotland.org/graph/simd/rank> {
      ?overall_rank_observation stats_dim:refArea ?dz .
      ?overall_rank_observation stats_dim:refPeriod year:2012 .
      ?overall_rank_observation simd:rank ?overall_rank .
      }

      GRAPH <http://data.opendatascotland.org/graph/simd/income-rank> {
      ?income_rank_observation stats_dim:refArea ?dz .
      ?income_rank_observation stats_dim:refPeriod year:2012 .
      ?income_rank_observation simd:incomeRank ?income_deprivation_rank .
      }

      GRAPH <http://data.opendatascotland.org/graph/simd/employment-rank> {
      ?employment_rank_observation stats_dim:refArea ?dz .
      ?employment_rank_observation stats_dim:refPeriod year:2012 .
      ?employment_rank_observation simd:employmentRank ?employment_deprivation_rank .
      }

      GRAPH <http://data.opendatascotland.org/graph/simd/health-rank> {
      ?health_rank_observation stats_dim:refArea ?dz .
      ?health_rank_observation stats_dim:refPeriod year:2012 .
      ?health_rank_observation simd:healthRank ?health_deprivation_rank .
      }

      GRAPH <http://data.opendatascotland.org/graph/simd/education-rank> {
      ?education_rank_observation stats_dim:refArea ?dz .
      ?education_rank_observation stats_dim:refPeriod year:2012 .
      ?education_rank_observation simd:educationRank ?education_deprivation_rank .
      }

      GRAPH <http://data.opendatascotland.org/graph/simd/geographic-access-rank> {
      ?access_rank_observation stats_dim:refArea ?dz .
      ?access_rank_observation stats_dim:refPeriod year:2012 .
      ?access_rank_observation simd:geographicAccessRank ?access_deprivation_rank .
      }

      GRAPH <http://data.opendatascotland.org/graph/simd/housing-rank> {
      ?housing_rank_observation stats_dim:refArea ?dz .
      ?housing_rank_observation stats_dim:refPeriod year:2012 .
      ?housing_rank_observation simd:housingRank ?housing_deprivation_rank .
      }

      GRAPH <http://data.opendatascotland.org/graph/simd/crime-rank> {
      ?crime_rank_observation stats_dim:refArea ?dz .
      ?crime_rank_observation stats_dim:refPeriod year:2012 .
      ?crime_rank_observation simd:crimeRank ?crime_deprivation_rank .
      }

    {
      SELECT ?dz ?dz_label WHERE
    {
      ?dz a <http://data.opendatascotland.org/def/geography/DataZone> .
      ?dz rdfs:label ?dz_label .
    }
    }
  }"

  ## Make the data table for SIMD
  dta.simd <- SPARQL(url = endpoint, query = query.simd, format = "csv")$results
  ### Clean the data frame
  dta.simd$dz_label <- gsub("Data Zone","", dta.simd$dz_label)

  # Readings shapefiles (pass only file that ends with shp)
  shps.dzs2001 <- readShapeSpatial("data/SG_DataZone_Bdry_2001.shp")

  ## Read shapefiles
  shps.dzs2001 <- fortify(shps.dzs2001, region= "DZ_CODE")

  # Switch on the gclibpermit
  gpclibPermit()

  # Make the plot
  output$distPlot <- renderPlot({

    ### Get the column index fumber
    col.ind <- match(input$firstvar, colnames(dta.simd))


    #### Calculate the breaks 
    ##### Take tha quantilies value from the UI
    ##### Obtain the breaks
    dta.simd$column <- as.numeric(as.character(dta.simd[,col.ind]))
    dta.simd$overall.quantiles <- ceiling(sapply(dta.simd$column,function(x) 
      sum(x-dta.simd$column>=0))/(length(dta.simd$column)/input$quannum))

    #### Graph the chart
    ggplot() + 
      geom_map(data = dta.simd, aes(map_id = dz_label, 
                                    fill = as.factor(dta.simd$overall.quantiles)), 
               map = shps.dzs2001) +
      geom_path(data = shps.dzs2001, aes(x=long, y=lat, group=group), 
                colour="black", size=0.25)

    ### Re-calculate summary stats
    summary.data <- head(dta.simd)

  })
  ### Do the summary tables
  output$summary.table <- renderDataTable({summary.data})
})

UI

require(shiny)

# Define list of options
choices.list <- list("Overall Rank" = "overall_rank", 
                     "Income" = "income_deprivation_rank",
                     "Employment" = "employment_deprivation_rank",
                     "Health" = "health_deprivation_rank",
                     "Education" = "education_deprivation_rank",
                     "Access to Services" = "access_deprivation_rank",
                     "Housing" = "housing_deprivation_rank",
                     "Crime" = "crime_deprivation_rank"
                     )

# Define UI for application that draws a histogram
shinyUI(fluidPage(

  # Application title
  titlePanel("Scottish Index of Multiple Deprivation 2012"),

  # Sidebar with a slider input for the number of bins
  sidebarLayout(
    sidebarPanel(
      selectInput(inputId = "firstvar", 
                  label = "Index domain to map",
                  choices = choices.list, 
                  selected = "income_deprivation_rank"),
      sliderInput("quannum", label = "Number of quantiles", 
                  min = 0, 
                  max = 100, 
                  value = 10)),

    # Show a plot of the generated distribution
    mainPanel(
      plotOutput("distPlot", height = "700px"),
      dataTableOutput("summary.data"),
      h5("Notes"),
      p("The data is sourced live from the Open Data for Scotland Project. The shapefiles are sourced from the Scottish Neighbourhood Statistics.")
    )
  )
))

fill=factor(overall.quantiles)

我面临着类似的问题,并且能够通过这种方式解决它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R:带有 geom_map 的 ggplot2 返回“x 和单位必须具有长度 > 0”错误,尽管值已转换为因子 的相关文章

  • 删除 R 中具有重复属性的行

    我有一个大数据框 其中包含以下列 ID time OS IP 该数据帧的每一行对应一个条目 在该数据框中对于某些IDs存在多个条目 行 我想删除这些多行 显然 同一 ID 的其他属性会有所不同 或者换句话说 我只想要每个 ID 一个条目 行
  • 使用 R 读取和转换二进制原始数据

    我有一个file https drive google com file d 0BxMpk0nhnJy6SFhxd2xuMzJYYlk edit usp sharing其中包含原始 二进制数据和 ascii 它包含一个时间戳和一个代表速度的
  • 获取所有矩阵列逐元素乘积对的快速方法

    假设我有一个数字matrix set seed 1 mat lt matrix rnorm 1000 ncol 100 我想生成所有向量 它们是中所有唯一向量对的逐元素乘积的结果mat 我们如何改进下面的代码 all pairs lt t
  • R 中的转换会导致文档错误

    每当我运行此代码时 tm map 行都会给我警告消息 警告信息 在 tm map SimpleCorpus docs toSpace 中 转换删除文档 texts lt read csv Data fast food Domino s Do
  • 使用 stargazer 分析包含时间序列的数据帧

    我有一个面板数据集共 10 个观测值和 3 个变量 观测值 30 的数量 10 行 国家 地区 2 列 迁移参数 相应年份的 1 列 可以这么说 我的数据框由 3 个年度数据框组成 我该如何申请观星者考虑到它是一个面板数据集 所以最大 N
  • 无法在 Document-Term-Matrix 中看到 `RTextTools::toLower()` 文本的结果

    我尝试创建一个矩阵 为此我想降低文本 为此 我使用此 R 指令 matrix create matrix tweets 1 toLower TRUE language english removeStopwords FALSE remove
  • 从 R 到 C 处理列表并访问它

    我想使用从 R 获得的 C 列表 我意识到这个问题与此非常相似 使用 call 在 R 和 C 之间传递数据帧 https stackoverflow com questions 6658168 passing a data frame f
  • kmeans 对分组数据进行聚类

    目前 我尝试在分组数据中找到簇的中心 通过使用示例数据集和问题定义 我能够创建kmeans每个组内的集群 然而 当涉及到给定组的集群的每个中心时 我不知道如何获取它们 https rdrr io cran broom man kmeans
  • 在 SPARQL 中计算满足约束的值,并为不满足约束的值返回 0

    我想使用 SPARQL 查询检测满足属性值条件的所有值 例如 假设我想检测其中值的所有资源rdfs label有类型xsd string 逻辑上的定义可以是 x 字符串标签 x y rdfs 标签 x y xsd 字符串 y 我找到了一种在
  • R:编写抛硬币的随机采样程序

    假设我们有以下情况 有一枚硬币 如果它正面朝上 那么下一次抛掷正面的概率是 0 6 如果是反面 那么下一次抛掷反面的概率也是 0 6 一个班有100名学生 每个学生随机抛掷硬币几次 Student n 的最后一次抛硬币不会影响 Studen
  • 从向量中删除元素在 R 中出现的时间量

    我想从一个向量中删除元素在另一个向量中出现的时间 就像我要减去它们一样 鉴于我想要删除的元素向量中的每个元素也存在于我想要从中删除的主向量中 a lt c A B B C C C b lt c A B C C a a in b return
  • R:根据元素长度从向量中删除元素

    如何根据字符串的字符数或长度从字符串向量中删除元素 df lt c asdf fweafewwf af aewfawefwef awefWEfawefawef gt df 1 asdf fweafewwf af aewfawefwef aw
  • 如何在 R 中为回归量创建“宏”?

    对于长且重复的模型 我想创建一个 宏 在 Stata 中称为 宏 并通过以下命令完成 global var1 var2 其中包含回归量的模型公式 例如来自 library car lm income education prestige d
  • 如何将带有观察计数的标签添加到 stat_summary ggplot?

    我有一个数据集 例如 outcome lt c rnorm 500 45 10 rnorm 250 40 12 rnorm 150 38 7 rnorm 1000 35 10 rnorm 100 30 7 group lt c rep A
  • rpart是自动剪枝吗?

    Is rpart自动修剪 生成的决策树rpart比具有自动修剪功能的 Oracle Data Mining 生成的级别要多得多 否 但拟合函数的默认值可能会 提前 停止分割 对于 早期 的某些定义 See rpart control对于您可
  • 将日期时间字符串转换为 Date 类

    我有一个带有日期时间字符列的数据框 当我使用as Date 除了少数实例之外 我的大多数字符串都被正确解析 下面的示例有望向您展示发生了什么 my attempt to parse the string to Date uses the s
  • R:如何找到向量的模式[重复]

    这个问题在这里已经有答案了 下面是我的data frame我想知道每个内存类别 1 到 8 的模式是什么 gt dput d structure list MEMORY1 c 5 5 7 1 5 6 4 5 4 5 5 4 1 5 5 2
  • 在函数中使用 quit/q 会导致 RStudio 出现致命错误

    更多的是好奇 但当你使用时q or quit在 R studio 内的函数内部 它会导致致命错误 如下所示 但 rgui 中的相同函数会导致 R 像往常一样停止 并且仅使用q 在 RStudio 中按预期关闭 R 为什么q在函数中导致 RS
  • 如何有效地将多个光栅 (.tif) 文件导入 R

    我是 R 新手 尤其是在空间数据方面 我正在尝试找到一种方法来有效地将多个 600 单波段栅格 tif 文件导入到 R 中 所有文件都存储在同一文件夹中 不确定这是否重要 但请注意 在我的 Mac 和 Windows 并行 VM 上的文件夹
  • R data.table 连接不等式条件

    我想使用 data table 包根据多个不等式条件对数据进行子集化 data table 手册中的示例展示了如何使用字符变量执行此操作 但不显示数字不等式 我还了解了如何使用子集函数来执行此操作 但我真的很想利用 data table 二

随机推荐

  • 从活动类中打开 Android 导航抽屉

    我正在开发安卓系统Navigation Drawer通过他们的文档看起来 抽屉只能扩展 Fragment Activity 因此要从我的所有活动中打开抽屉 我需要将我的所有活动变成一个片段 这不是一个可行的解决方案 有没有办法打开一个从 A
  • 如何在删除 SQLite 数据库中的行后更新 KEY_ROWID

    从数据库中删除一行后 如何更新 SQLite 数据库中的 KEY ROWID 编号 情况1 例如 如果我的数据库中有五行 则此时 KEY ROWID 的最大值为 5 我删除表中的所有行 然后我添加新行 此时KEY ROWID不再从1开始 它
  • Terraform 从 Packer 中创建的托管磁盘映像创建 VM

    我已经使用 Packer 创建了一个自定义 VM 映像 现在我尝试使用 Terraform 基于此映像创建一个新 VM 但我对如何设置 TF 文件感到困惑 我可以创建其余的基础设施 我认为我的打包器 json 文件创建了一个托管磁盘映像 但
  • Objective-c 中的 AES256 解密问题

    我正在尝试使用以下代码片段来解密文件 该文件是使用 32 字节密钥加密的 因此 当我尝试加密文件数据时 一切正常 但是当我尝试解密时 程序甚至没有通过条件if cryptStatus kCCSuccess 在 CryptoExtension
  • 使用 Visual Studio 或 TFS 在项目之间共享资源(图像/css/js)

    有没有一种有效的方法可以在不同项目之间共享视觉资源 这包括图像 CSS 和 JavaScript 我查看了以下 Stack Overflow 问题 但似乎没有回答这个问题 在 Visual Studio 中的不同项目之间共享 css jav
  • 突出显示一行时是否触发任何事件?

    我创建了一个 ListView 来显示文档列表 然后创建了一个按钮 按钮 A 来执行一些操作 我的要求是我希望按钮状态可以随着所选文档的更改而更改 Fox示例 下图中有三个文档 我希望当我单击Order 00001或Order 00002时
  • 仅从文件的完整路径获取文件名

    我想分割路径 只保存文件名test xls在一个新变量中 namearray C Users z003m Desktop Service Tickets automationscript vbs Newfolder test xls 推荐使
  • Euler 23 在 C# 中:0.2 秒,在 F# 中:30.5 秒。为什么?

    我对这个问题的 F 解决方案不太满意 因为我找不到一个漂亮且快速的解决方案 但这不是这里的问题 问题是 我将解决方案翻译成 C 而且速度很快 就像 相对而言 速度非常快 我不明白为什么 是的 我去过 Reflector C 代码看起来很相似
  • XDebug 真的很慢

    我正在尝试让 XDebug 在我的本地 wamp 安装 Uniform Server 8 上运行 但是当我把xdebug remote enable 1 在我的 php ini 中 这是我的 IDE 使用 xdebug 所必需的 加载页面变
  • WPF 无边框窗口的 DropShadow

    我有一个 WPF 窗口 WindowStyle 设置为 none 有什么方法可以强制这个窗口留下阴影 就像 WindowStyle 不是 none 时得到的阴影一样 我不想将AllowTransparency 设置为true 因为它会影响性
  • 检测 Javascript 中字符串中的重复字母

    用于检测字符串中重复字母的代码 var str paraven4sr var hasDuplicates a zA Z 1 test str alert repeating string hasDuplicates 我正进入 状态 fals
  • 如何在Python中模糊匹配数组列中的项目?

    我有一系列来自 NCAA 的球队名称 以及与其相关的统计数据 学校名称通常会被缩短或完全省略 但名称的所有变体通常都有一个共同元素 例如阿拉巴马州赤潮与赤潮 这些名称全部包含在一个数组中 没有特定的顺序 我希望能够通过模糊匹配来获取团队名称
  • 在“for”循环中读取带有空格、制表符和多个输入文件的完整行

    我看过以下文章 for 环形 它会在出现空格 制表符或换行符等空白时进行分割 为了解决这个问题 我有以下额外的命令 IFS n 但是当我尝试根据以下细节解决上述场景时 我有两个文件 输入1 txt and 输入 txt 在我当前的目录中 b
  • 在 ruamel.yaml 迭代期间获取评论

    当我迭代 YAML 对象时如何获取注释 yaml YAML with open path r as f yaml data yaml load f for obj in yaml data how to get the comments h
  • Wordpress 的 nginx 配置位于同一服务器的 Rails 应用程序的子目录中

    当我尝试访问 example com blog 时 我不断收到 文件未找到 错误 并且在 var log nginx error log FastCGI sent in stderr Primary script unknown while
  • 返回一个随机偶数

    我有以下几种方法 rnd 方法返回两个边界之间的单个随机整数 Create next batch of 55 random numbers void advance random int j1 double new random for j
  • 文件上传控制和 GWT 外观

    我正在编写我的第一个 GWT 项目 我有一个带有标签 文件上传控件和上传按钮的表单 但它们在各种网络浏览器中看起来很糟糕并且差异很大 另外 文件上传控件中的按钮与 GWT 按钮控件的样式不同 另一个问题是 在 Chrome 中 文件选择按钮
  • Android Widget 在更新期间显示奇怪的图像

    我这里有一个奇怪的 我有一台配备 Nextel 的 Motorola i1 运行 Android 1 5 我有一个安卓小部件 当我开始运行更新此小部件的服务时 我看到来自另一个小部件的图像 启动 DC Contact 它在我的小部件的位置显
  • 使用 Newton-Raphson 方法在 C 中求平方根

    在下面的代码中 我想将终止条件替换为 如果猜测平方与x的比率接近1 则while循环应该终止 我尝试了各种表达式 但没有一个能够正确运行代码 有什么建议吗 include
  • R:带有 geom_map 的 ggplot2 返回“x 和单位必须具有长度 > 0”错误,尽管值已转换为因子

    我正在开发一个原始的闪亮应用程序 它将映射来自苏格兰开放数据项目 我制定了 SPARQL 查询 用于生成类似于下面提供的摘录的数据框 dz label overall quantiles S010001 8 S010002 9 我有强化的形