将 ASC 文件读入 R

Posted

技术标签:

【中文标题】将 ASC 文件读入 R【英文标题】:Reading an ASC file into R 【发布时间】:2013-12-09 06:21:11 【问题描述】:

我目前正在尝试将各种“ASC”文件中的信息提取到 R 中,以便对数据进行分析。

问题是我不确定如何准确读取文件。我尝试了一个标准的 read.table 函数,但所有数字都完全相同(-9999.00)。为了排除数据损坏的可能性,我读入了另一个 ASC 文件并得到了相同的结果。我唯一确定的是,它们之间的文件大小完全相同。

无论如何我可以读取这些文件吗?我可以查看任何 R 包吗?

我系了这个:

    x = read.table("Dropbox/MVZ/aet2009sep.asc")
    y = read.table("Dropbox/MVZ/aet2009oct.asc")

我的输出是

    > head(x, n =20)
         V1        V2
    1         ncols    3486.0
    2         nrows    4477.0
    3     xllcorner -374495.8
    4     yllcorner -616153.3
    5      cellsize     270.0
    6  NODATA_value   -9999.0
    7      -9999.00   -9999.0
    8      -9999.00   -9999.0
    9      -9999.00   -9999.0
    10     -9999.00   -9999.0
    11     -9999.00   -9999.0
    12     -9999.00   -9999.0
    13     -9999.00   -9999.0
    14     -9999.00   -9999.0
    15     -9999.00   -9999.0
    16     -9999.00   -9999.0
    17     -9999.00   -9999.0
    18     -9999.00   -9999.0
    19     -9999.00   -9999.0
    20     -9999.00   -9999.0

    head(y, n =20)
         V1        V2
    1         ncols    3486.0
    2         nrows    4477.0
    3     xllcorner -374495.8
    4     yllcorner -616153.3
    5      cellsize     270.0
    6  NODATA_value   -9999.0
    7      -9999.00   -9999.0
    8      -9999.00   -9999.0
    9      -9999.00   -9999.0
    10     -9999.00   -9999.0
    11     -9999.00   -9999.0
    12     -9999.00   -9999.0
    13     -9999.00   -9999.0
    14     -9999.00   -9999.0
    15     -9999.00   -9999.0
    16     -9999.00   -9999.0
    17     -9999.00   -9999.0
    18     -9999.00   -9999.0
    19     -9999.00   -9999.0
    20     -9999.00   -9999.0

【问题讨论】:

如果您不提供包名称或代码,您不能指望我们知道发生了什么样的错误。 您应该包含原始文件的内容。一方面,我不知道 .asc 文件是什么或看起来像什么。 【参考方案1】:

更新:可以直接从 'raster' 包中使用 raster 函数读取 .asc 文件(又名 ESRI ASCII Raster 文件)。帮助说:

如果 x 是文件名,则识别以下附加变量:

本机:合乎逻辑。默认为 FALSE,除非包 rgdal 缺失。如果为 TRUE,则 ... 和 Arc ASCII 文件的读取和写入是使用本机(光栅包)驱动程序完成的,而不是通过 rgdal....

library(raster)
r = raster("C:\\...\\Dropbox/MVZ/aet2009sep.asc")
plot(r)

编辑 2 [过时]:

另一种方法是 raster() 函数,正确安装包 rgdal

library(rgdal)
r = raster("C:\\...\\Dropbox/MVZ/aet2009sep.asc")
plot(r)

编辑 1 [过时]:

adehabitat 现已弃用。目前,它在加载时会提供警告:

使用它很危险,因为错误将不再被纠正。 现在推荐使用 adehabitatMA、adehabitatLT、adehabitatHR 和 adehabitatHS 包。 ...

原答案[作废]:

使用 R 包 adehabitat 中的 import.asc 函数(参见第 92 页):

library(adehabitat)
asc = import.asc("C:\\...\\Dropbox/MVZ/aet2009sep.asc")

#plot asc object.
library(raster)
r = raster(asc)
plot(r)

【讨论】:

@Stophface,更新了答案。感谢您的反馈。【参考方案2】:

SDMTools 有函数read.asc,在R 3.2.4 下工作。但是,至少在我的情况下,使用 read.table 和所有默认值都是开箱即用的。

【讨论】:

【参考方案3】:

使用 Laf 包,速度非常快。

【讨论】:

【参考方案4】:

我使用了命令 x =read.csv("C:\...\Dropbox/MVZ//aet2009sep.asc", sep=";")

我在使用 the import button in the Environment window. 手动导入后发现了这个

【讨论】:

以上是关于将 ASC 文件读入 R的主要内容,如果未能解决你的问题,请参考以下文章

基于流式输入输出 使用Java借助GSON库 实现对大型asc文件的读入解析 并输出为JSON文件

基于流式输入输出 使用Java借助GSON库 实现对大型asc文件的读入解析 并输出为JSON文件

R:帮助将特定的 .mat 文件读入 R

将扩展名为 .data 的文件读入 R

如何按行条件将巨大的 csv 文件读入 R?

如何将多个(excel)文件读入R? [复制]