【问题标题】:Function fread and ASCII files函数 fread 和 ASCII 文件
【发布时间】:2021-11-09 20:09:55
【问题描述】:

我正在尝试执行循环以多次复制和重命名 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.string=NULL 删除NA,并使用colnames 删除行和列的自动重命名,但似乎没有任何效果。我只是想获得与原始 ascii 文件完全相同的格式。

【问题讨论】:

    标签: r ascii fread


    【解决方案1】:

    你的问题是如何

    多次复制和重命名文件。

    你可以这样做

    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)
    

    【讨论】:

    • 假设我有一个 ascii 文件,它描述了 1 月份一个物种的空间分布。我正在尝试为我每年研究的每个 1 月复制这个确切的文件。我的循环代码似乎做得很好。我的问题是那些复制的文件有一些额外的行/列名称,以及一些 NA(与我的原始文件相比)。我相信问题出在我的 fread 函数中,因为我的示例中的 fileDF 已经以那些额外的列/行结束。这更清楚吗?感谢您的帮助!
    • 如果你想复制文件,你应该使用复制它们,例如与file.copy。那里不应该读它们。
    • 我正在设法复制文件。我认为问题在于,当我使用 fread 从原始文件夹中提取这些多个文件时,文件被更改并添加了列、NA 和行。难道是因为原始文件的行有不同的列数?
    • 使用fread没有意义
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    • 2019-10-13
    • 2018-06-27
    • 1970-01-01
    • 2020-12-14
    相关资源
    最近更新 更多