【问题标题】:How do I use the ggmap library's get_map function inside of knitr?如何在 knitr 中使用 ggmap 库的 get_map 函数?
【发布时间】:2012-06-25 03:26:50
【问题描述】:

我所有的 R 代码都在独立脚本中按预期运行。一旦进入 R Markdown 文件,get_map() 调用就会中断。

map <- get_map(location = 'minneapolis', zoom = 9)

我得到一个错误:

标签:unnamed-chunk-2
sink() 中的警告:没有要移除的接收器
标签:未命名的块 2
进程文件(文本)中的错误:
从第 53-64 行退出:close.connection(con) 中的错误:连接无效
调用: knit -> process_file
执行停止 knitr 以状态 1 终止

你知道为什么 knitr 和 get_map 表现不佳吗?

【问题讨论】:

    标签: r knitr ggmap


    【解决方案1】:

    我花了一段时间才弄清楚问题所在。根本原因是ggmap 在它的四个功能中对closeAllConnections() “粗鲁”:mapdist()geocode()revgeocode()route()knitr 使用 evaluate package 评估 R 代码,这会打开文本连接以记录 R 输出。因为ggmap 已经关闭了所有连接,evaluate 将无法再次关闭其连接,从而导致您看到的错误。详情请见https://github.com/hadley/evaluate/blob/master/R/watcher.r

    通常应该明确使用close()函数关闭哪些连接,使用closeAllConnections()很危险,因为这可能会关闭不应该关闭的连接。我不明白作者为什么要使用它,我想你需要向他报告这个问题。最后我们应该能够无错误地运行它:

    library(evaluate); library(ggmap)
    evaluate("map <- get_map(location = 'minneapolis', zoom = 9)")
    

    【讨论】:

    • 主要问题(由一辉描述)现已在开发版中修复,过几天应该会解决。
    • @dkahle 谢谢!为什么不将更改也推送到 Github? :)
    猜你喜欢
    • 2013-11-18
    • 2013-05-28
    • 2013-08-20
    • 2014-04-29
    • 1970-01-01
    • 2014-06-17
    • 2016-01-10
    • 2012-09-09
    • 1970-01-01
    相关资源
    最近更新 更多