首页 > 解决方案 > 函数 fread 和 ASCII 文件

问题描述

我正在尝试执行循环以多次复制和重命名 asci 文件。我的循环工作正常,但是在尝试首先导入我的 ascii 文件时,我正在努力使用“fread”功能。

我的原始 ascii 文件如下所示:

在此处输入图像描述

这是我到目前为止一直在使用的代码

library(purrr)
library(data.table)
files=list.files(pattern = "*.asc")
    fileDF<-files%>%map(fread, fill=TRUE, header="auto", sep="auto") 
    fileDF

现在 fileDF 看起来像这样

      V1            V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19 V20 V21 V22 V23 V24 V25 V26 V27 V28 V29 V30 V31 V32 V33 V34 V35 V36 V37 V38 V39 V40 V41
 1:        ncols    41.0000000 NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
 2:        nrows    44.0000000 NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
 3:    xllcorner  -133.2624969 NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
 4:    yllcorner    41.3875008 NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
 5:     cellsize     0.2916667 NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
 6: NODATA_value -9999.0000000 NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
 7:          0.0     0.0000000  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
 8:            0     0.0000000  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
 9:            0     0.0000000  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
10:            0     0.0000000  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
11:            0     0.0000000  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
12:           10    10.0000000  0  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
13:           10    10.0000000 10  0  0  0  0  0  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
14:           10    10.0000000 10 10 10 10 10  0  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
15:           10    10.0000000 10 10 10 10 10  0  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0

显然,我运行循环后得到的新文件与我原来的文件不同,在我使用的其他软件中无法读取(因为空间格式不同)。

我试图删除 NA na.string=NULL,并删除行和列的自动重命名,colnames但似乎没有任何效果。我只是想获得与原始 ascii 文件完全相同的格式。

标签: rasciifread

解决方案


你的问题是如何

多次复制和重命名文件。

你可以这样做

outf <- paste0("copy_", 1:10, ".asc") 
inf <- "test.asc"
for (i in 1:length(outf)) {
    file.copy(inf, outf[i])
}

或与 lapply

lapply(outf, \(f) file.copy(inf, f)

推荐阅读