为了得到答案,我已经挖了很多,但是找不到任何东西,所以我在这里。
我有一大堆ascii光栅文件,对应于某个区域的空气温度和露点温度超过744小时的时间步长。 (所以我有744个气温和744露点文件,对应31天的月份)。这些文件每个只有大约45 kB。
我想将它们堆叠在一起,这样我就可以对它们进行一些分析,我也希望将它们的单位从K转换为deg F.
文件名为air Tair1.txt,Tair2.txt,... Tair744.txt和Eair1.txt,Eair2.txt,... Eair744.txt。
使用光栅包,我可以轻松地将所有文件加载为栅格:
for (i in 1:744) {
assign(paste0("Tair",i),raster(paste0("Tair",i,".txt")))
assign(paste0("Eair",i),raster(paste0("Tair",i,".txt")))
}
我尝试使用带模式或glob2rx的ls()来定义光栅文件名和 然后对它们进行转换,或做类似的事情将它们加入堆栈中,但无济于事。我还尝试了mget,values(mget(filename))以及类似的东西来获取循环中的值。
我知道R不能很好地处理大型数据集,但我认为这些并不是那么大,所以应该有一些非常简单的东西?
我将不胜感激任何帮助和建议!谢谢。
答案 0 :(得分:0)
光栅包的RasterStack
就是为了这个:
library(raster)
files <- paste0("Tair",1:744,".txt")
rs <- stack(files)
为什么这些文件有文本格式?是谁给你造成了这场灾难?我怀疑你的各个图层都没有足够的元数据,所以试一试,看看它是否合理。您可以使用extent(rs) <-
和projection(rs) <-
来修复:
r <- raster(files[1])
print(r)
不要使用只会造成混乱的assign()
。