【问题标题】:"Error: Cannot open The file doesn't seem to exist." on an introductory st_read() example“错误:无法打开该文件似乎不存在。”在介绍性的 st_read() 示例中
【发布时间】:2021-09-22 01:32:00
【问题描述】:

我输入了一些更可重现的代码,但错误仍然存​​在。

抱歉,没有更好的问题,示例代码在我进行更改之前就中断了。我以前也从未处理过“./{rest of url}”。是这个问题吗? 我正在处理这个 https://programminghistorian.org/en/lessons/geospatial-data-analysis

我收到此错误“错误:无法打开“./data/County1990ussm/”;该文件似乎不存在。”

我已经确认我在预期的工作目录中(数据文件夹的上一层)

“我们首先加载选定的数据。本教程的数据可以在这里下载 - https://programminghistorian.org/assets/geospatial-data-analysis/data.zip - 。下载后,将所有文件放在 R 中工作目录中标记为 data 的文件夹中。我们将创建一个变量并从变量目录中读取我们的数据。一旦运行,County_Aggregate_Data 变量将包含我们将分析的数据和地理信息:"

library(sf)
library(tmap)
library(plotly)

setwd("path")
 aFile <- "https://programminghistorian.org/assets/geospatial-data-analysis/data.zip"

# check to see whether file exists before downloading and unzipping it
if(!file.exists("data.zip")) {
     download.file(aFile,"data.zip",mode="wb")
     unzip("data.zip")
}
 print(list.files("./data"))
County_Aggregate_Data <- st_read("./data/County1990ussm/")

输出

"[1] "County1990_Data"          "County1990ussm"          
[3] "DP_TableDescriptions.xls" "ExtendedZIP5.csv"        
[5] "GeocodedAddresses.csv"    "Religion
"
    "Error: Cannot open "./data/County1990ussm/" The file doesn't seem to exist."

【问题讨论】:

  • 嗨,RuffGriffin,您能使用list.files("data")list.files("data/County1990ussm/") 的输出吗?
  • "data" _> [1] "County1990_Data" "County1990ussm" [3] "DP_TableDescriptions.xls" "ExtendedZIP5.csv" [5] "GeocodedAddresses.csv" "Religion" 1990ussm -> [ 1] "US_county_1990.dbf" "US_county_1990.prj" "US_county_1990.shp" [4] "US_county_1990.shx"

标签: r sf


【解决方案1】:

如果原始发布者将 zip 文件下载到 ./data 目录,然后使用默认设置解压缩,则解压缩会创建另一个 /data 子目录。

没有看到原始海报数据目录的内容,我们无法判断是否是这种情况。无论如何,我们可以演示如何下载文件、解压缩文件并将其中一个组件文件加载到单个脚本中。

这是一个脚本,它从网站下载 zip 文件到当前 R 工作目录,解压缩到 ./data 并读取数据。我们使用download.file() 中的mode="wb" 参数告诉R 使用二进制下载而不是文本下载。

aFile <- "https://programminghistorian.org/assets/geospatial-data-analysis/data.zip"

# check to see whether file exists before downloading and unzipping it
if(!file.exists("data.zip")) {
     download.file(aFile,"data.zip",mode="wb")
     unzip("data.zip")
}

下载并解压该文件后,我们可以验证其内容是否已通过list.files() 提取到./data

# confirm that data is in the right directory
list.files("./data")

 > list.files("./data")
[1] "County1990_Data"          "County1990ussm"          
[3] "DP_TableDescriptions.xls" "ExtendedZIP5.csv"        
[5] "GeocodedAddresses.csv"    "Religion"                

现在我们已经确认了County1990ussm 的存在,我们可以使用原始帖子中的代码将文件加载到内存中。

library(sf)
library(tmap)
library(plotly)
County_Aggregate_Data <- st_read("./data/County1990ussm/")
head(County_Aggregate_Data)

...和输出:

> head(County_Aggregate_Data)
Simple feature collection with 6 features and 20 fields
Geometry type: MULTIPOLYGON
Dimension:     XY
Bounding box:  xmin: -1224327 ymin: -932167.3 xmax: 1843060 ymax: 1066589
Projected CRS: USA_Contiguous_Albers_Equal_Area_Conic
  DECADE NHGISNAM NHGISST NHGISCTY ICPSRST ICPSRCTY ICPSRNAM       STATENAM
1   1990     York     420     1330      14     1330     YORK   Pennsylvania
2   1990  Sherman     200     1810      32     1810  SHERMAN         Kansas
3   1990   Onslow     370     1330      47     1330   ONSLOW North Carolina
4   1990 Gallatin     300     0310      64      310 GALLATIN        Montana
5   1990    Ocean     340     0290      12      290    OCEAN     New Jersey
6   1990   Uvalde     480     4630      49     4630   UVALDE          Texas
  ICPSRSTI ICPSRCTYI ICPSRFIP STATE COUNTY  PID X_CENTROID Y_CENTROID  GISJOIN
1       14      1330        0   420   1330  936  1621651.3   436217.9 G4201330
2       32      1810        0   200   1810 1078  -488123.2   222198.8 G2001810
3       47      1330        0   370   1330 1114  1675585.4  -145184.9 G3701330
4       64       310        0   300   0310 1350 -1179798.5   996189.2 G3000310
5       12       290        0   340   0290 2426  1823185.7   479312.4 G3400290
6       49      4630        0   480   4630 2979  -365338.2  -901445.2 G4804630
  GISJOIN2 SHAPE_AREA SHAPE_LEN                       geometry
1  4201330 2357546914  252994.0 MULTIPOLYGON (((1617516 458...
2  2001810 2735057979  209726.2 MULTIPOLYGON (((-460646 244...
3  3701330 1993173332  723453.4 MULTIPOLYGON (((1680399 -17...
4  3000310 6559312252  558780.0 MULTIPOLYGON (((-1160194 10...
5  3400290 1704201820  649824.4 MULTIPOLYGON (((1833940 506...
6  4804630 4036829106  254728.5 MULTIPOLYGON (((-348764 -87...
> 

这种方法的另一个好处是分析是可重现的。也就是说,由于脚本中引用了源数据文件,除非编程历史网站被删除,否则无需数据文件即可进行分析。

【讨论】:

  • 我以后会这样做。我仍然遇到同样的问题,我不知道为什么(编辑帖子以显示完整的可重现代码)。
  • @RuffGriffin - 你是从一个干净的 R 工作目录开始下载文件,还是只打印list.files() 的结果?您是如何从网站下载文件的(手动或通过 R)?我无法重现您获得的错误。你想用setwd("path") 做什么?当你运行getwd() 时会发生什么?是你所期望的吗?
  • 是的,我在预期的工作目录中。我使用上面的代码从头开始,仍然出现错误。它确实有助于确认上述内容应该有效。
  • @RuffGriffin - 您的操作系统是否配置为英语以外的语言?不久前我回答了另一个 SO 问题,最终问题是由于语言差异,R 没有正确解析子目录。
  • 不,这都是非常默认的:英语,在 Windows 操作系统中(如果有帮助的话)。
猜你喜欢
  • 2023-04-02
  • 2013-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多