我有一个Nx3 tibble我想保存到NetCDF(.nc)文件。 tibble有三列:
如何将其保存到R中的NetCDF(.nc)文件?到目前为止,我一直在使用带有混合结果的 raster 包:
# Be careful to call raster and dplyr in this specific order.
require(raster)
require(dplyr)
set.seed(10)
df <- expand.grid(lon = 1:10, lat=1:10) %>% as_tibble() %>% mutate(var1 = rnorm(100))
val <- df %>% select(var1) %>% pull()
coordinates(df) <- ~ lon + lat
gridded(df) <- TRUE
raster_df <- raster::raster(df)
projection(raster_df) <- CRS("+proj=longlat +datum=WGS84 +ellps=WGS84")
setValues(raster_df, val)
writeRaster(raster_df,
filename = "file.nc",
varname = "var1",
format = "CDF")
我对此解决方案唯一的问题是它似乎不会产生一致的输出。有时文件有时会被破坏(即我不能再次打开它们)而且有趣的是,它们都是相同的大小,根据原始数据并非完全相同(除了可能的经度和纬度)之外根本不应该是这种情况
我正在使用:
我愿意使用此方法的其他替代方法(或其他包)。
答案 0 :(得分:2)
你的例子似乎涉及很多不必要的箍。这是一个更简单的版本:
- hosts: all
become: true
tasks:
- name: copy icinga2 2.7.2
synchronize:
src: /home/ansible/playbooks/files/icinga2.7
dest: /home/ansible
owner: yes
这似乎工作正常。
您的代码中存在一个明显的错误:library(raster)
set.seed(10)
r <- raster(xmn=0.5, xmx=10.5, ymn=0.5, ymx=10.5, nrow=10, ncol=10, vals=rnorm(100))
z <- writeRaster(r, filename = "file.nc", varname = "var1")
z
。
这应该是setValues(raster_df, val)
或raster_df <- setValues(raster_df, val)