【问题标题】:Difficulty opening a package data file of unknown type难以打开未知类型的包数据文件
【发布时间】:2018-10-12 00:00:38
【问题描述】:

我正在尝试将地图包中的状态地图加载到 R 对象中。我希望它是一个 SpatialPolygonsDataFrame 或者我可以在检查后变成一个。然而,我在第一步失败了——把它变成一个 R 对象。我不知道文件类型。

我首先尝试将 map() 输出直接分配给 R 对象:

st_m <- maps::map(database = "state")

绘制地图,但str(st_m) 似乎什么都不做,除非它正在重新绘制同一张地图。

然后我尝试将其加载为数据集:st_m &lt;- data("stateMapEnv", package="maps"),但这只是返回一个字符串:

> str(stateMapEnv)
 chr "R_MAP_DATA_DIR"

我打开地图目录win-library/3.4/maps/mapdata/,发现我认为是地图文件“state.L”。

我尝试使用扫描阅读它并收到一条我不明白的错误消息:

scan(file = "D:/Documents/R/win-library/3.4/maps/mapdata/state.L")
Error in scan(file = "D:/Documents/R/win-library/3.4/maps/mapdata/state.L") : 
  scan() expected 'a real', got '#'

然后我用 Notepad++ 打开了这个文件。它似乎是一个二进制或压缩文件。

所以我认为它可能是一个带有不寻常扩展名的 R 数据文件。但是我尝试加载它返回了一个“bad magic number”错误:

st_m <- load("D:/Documents/R/win-library/3.4/maps/mapdata/state.L")
Error in load("D:/Documents/R/win-library/3.4/maps/mapdata/state.L") : 
      bad restore file magic number (file may be corrupted) -- no data loaded

观察到这些响应已经从无用到难以理解再到神秘,我认为最好向 stackoverflow 的向导寻求帮助。

【问题讨论】:

  • 不明白你所说的str(st_m) 什么意思。它似乎只是一个 x、y 坐标和状态名称的列表
  • andrewH,您希望str 函数做什么?我希望它能够输出对象的structure 的摘要,但不会在其演示文稿中执行任何操作。相反,一些类会覆盖它们的print.classtype 函数来做一些特别的事情;例如p &lt;- ggplot(...) 非常快,而且只做赋值; print.ggplot 函数实际上是 plots 它,这是它的“打印副作用”,但 str(p) 并没有这样做,它只是破坏了结构。 (不过,也可以写ggplot2::str.ggplot,玩得开心……)
  • 查看文档 (?maps::map) 以了解 maps::map("state") 返回类型为 map 的对象并可选择绘制形状。然后,您希望将该对象转换为 Spatial* 对象

标签: r io format


【解决方案1】:

这应该能够为您导出“状态”或任何其他地图数据集:

library(ggplot2)
state_dataset <- map_data("state")

【讨论】:

    猜你喜欢
    • 2012-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 2021-12-01
    • 2020-01-31
    相关资源
    最近更新 更多