【发布时间】:2021-12-20 09:36:18
【问题描述】:
我需要一些关于我的光栅砖名称格式的帮助。我有一块 16 层波高的砖,每层都有一个自 1970 年以来的秒时间戳。我可以提取名称并转换为标准日期格式。但是,当我尝试将名称重新插入光栅砖时,每个日期戳前面都会出现一个“X”。这使我无法在闪亮的应用程序中创建日期滑块输入,因为最大值、最小值和值参数必须是数字。
我发现一个旧帖子说这是不可能的。 (Why does R add an "x" when renaming raster stack layers)
我很好奇是否有人知道解决方法?
这是我下载和清理光栅的代码。
library(terra)
url <- "http://thredds.cdip.ucsd.edu//thredds/fileServer/cdip/model/MOP_grids/CA_0.01_forecast.nc"
options(timeout = 10000)
data_set <- "wave_data.nc"
if (!file.exists(data_set)) {
download.file(url, data_set, mode="wb")
}
waves <- rast(data_set, sub = "waveHs")
ROU <- ext(-121.0062, -118.7438, 33.10625, 34.90625)
wave_crop <- crop(waves, ROU)
remove_txt <- gsub("waveHs_waveTime.", "", names(waves)) |>
as.numeric() |>
lubridate::as_datetime()
library(raster)
wave <- brick(wave_crop)
names(wave) <- remove_txt
wave
#class : RasterBrick
#dimensions : 180, 226, 40680, 16 (nrow, ncol, ncell, nlayers)
#resolution : 0.009999997, 0.009999998 (x, y)
#extent : -121.005, -118.745, 33.105, 34.905 (xmin, xmax, ymin, ymax)
#crs : +proj=longlat +ellps=WGS84 +no_defs
#source : memory
#names : X2021.11.07.19.00.00, X2021.11.08.01.00.00, X2021.11.08.07.00.00, X2021.11.08.13.00.00, X2021.11.08.19.00.00, X2021.11.09.01.00.00, X2021.11.09.07.00.00, X2021.11.09.13.00.00, X2021.11.09.19.00.00, X2021.11.10.01.00.00, X2021.11.10.07.00.00, X2021.11.10.13.00.00, X2021.11.10.19.00.00, X2021.11.11.01.00.00, X2021.11.11.07.00.00, ...
#min values : 0.08262682, 0.08607960, 0.08421428, 0.07400891, 0.06429628, 0.05832646, 0.05505765, 0.04826499, 0.03828974, 0.03100377, 0.02817857, 0.03242879, 0.03779505, 0.03922490, 0.05875918, ...
#max values : 2.788141, 3.086087, 3.117096, 3.096558, 2.907296, 2.608371, 2.439595, 2.297133, 2.184082, 2.494745, 2.174670, 2.003929, 2.195310, 2.608896, 2.702595, ...
【问题讨论】:
-
R 中的名称不能以 _ 或数字开头。
-
名称不能以数字开头是不太正确的,但是这样的对象名称必须反引号才能从符号表中正确访问。我怀疑向您展示如何做到这一点将解决您的闪亮问题,因为这些名称并不是真正的数字类,并且调度系统不会将其识别为可以由期望的函数或运算符处理的东西数值。当您需要为滑块函数创建日期分类输入时,我认为您应该使用
sub删除as.numeric之前的前导“X”。