将矩阵导出到文本文件时添加特殊标题的R代码



我的代码是从一个大列创建一个141 x 131矩阵,并将其导出为文本文件。到目前为止效果良好。我将使用ASCII到光栅工具将这些文件导入ArcGIS。ArcGIS要导入它们,需要一个五行标题,标题后面的数据如下:

NCOLS 131
NROWS 141
XLLCENTER -150
YLLCENTER -70
CELLSIZE 1
NODATA_VALUE -32768
265 41.7 1.8 12 16 18.3 16.5 18.3 19.7 24.5 26.1 28.4...

一旦R保存了文本文件,手动粘贴到这个标题中是很简单的,但我有900多个文件需要处理,所以我希望R在导出文本文件时添加标题。这可能吗?或者我可以把标题行添加到矩阵的前5行,然后导出它吗?

编辑:下面的这一部分是关于我在评论中提出的另一个问题。

这是我的全部代码:

batch_tpose <- function(filename) {
dat <- matrix(scan(file = filename),ncol=3,byrow=T)
dat_trans <- matrix(dat[,3], 141, byrow=FALSE)
header <- "NCOLS 131
NROWS 141
XLLCENTER -150
YLLCENTER -70
CELLSIZE 1
NODATA_VALUE -32768"
writeLines(header, filename)
write.table(dat_trans, file = filename, row.names=FALSE, col.names=FALSE, append=TRUE)
## This works, I just need the output to be something like out/filename...

}
batch_tpose("200RelVort-nwatl-20201008-15.txt")

我希望能够使用list.files在底部的batch_tpose命令中处理一堆文件。现在我只是用一个文件进行测试。这是有效的,但它会将文件写入工作目录。它还覆盖源文件,因为它在同一目录中。如何将输出文件写入";out";目录我尝试过CCD_ 3和CCD_;filename"我试过其他组合,但它们都会出错。

您可以先用readLines写入标头,然后用write.table(或类似函数(写入数据。诀窍是选择append = TRUE。这里有一个例子:

header <- "NCOLS 131
NROWS 141
XLLCENTER -150
YLLCENTER -70
CELLSIZE 1
NODATA_VALUE -32768"
data <- matrix(rnorm(100), ncol=10)
writeLines(header, "file.txt")
write.table(data, file="file.txt", col.names=FALSE, row.names=FALSE, append=TRUE)

您还可以将paste标题文本与常用的R函数一起使用:

ncols=131
nrows=141
header <- paste0("NCOLS ", ncols, 
"nNROWS ", nrows,
"nXLLCENTER -150
YLLCENTER -70
CELLSIZE 1
NODATA_VALUE -32768")

换行符可以指定为文本字符串中的换行符,也可以指定为换行符";\n〃;密码

相关内容

  • 没有找到相关文章

最新更新