1

我正在慢慢过渡到terra::rastfrom raster,我注意到我无法在我的标题中添加日期。我想出了一个解决方法(重新分配给角色),但我想知道为什么它在工作时不起作用raster?错误消息信息量不大。

这是一个例子:

dates <- seq(as.Date("2015-06-24"), as.Date("2016-01-01"), by=1)
test <- terra::rast(nrows=100, ncols=100, xmin=0, xmax=100, ymin=0, ymax=100,
                      crs="+proj=utm +zone=46 +datum=WGS84 +units=m +no_defs", 
                      resolution=10)
values(test) <- runif(10000)
plot(test, col=viridis::plasma(11), main=dates[4], breaks = c(seq(0, 1, by=0.1)))

Error in if (main != "") { : missing value where TRUE/FALSE needed

此代码在执行以下操作时有效:

plot(test, col=viridis::plasma(11), main=as.character(dates[4]), 
     breaks = c(seq(0, 1, by=0.1)))

想法?

4

1 回答 1

3

错误正是问题所在。在代码中的某个位置,main会测试参数以查看它是否是""带有 line的空字符串if(main != "")。但是将Date类对象与空字符串进行比较会得出缺失值的NA结果:

Sys.Date() == ""
# [1] NA

如果你给它一个if()语句会抛出一个错误NA

if(NA){}
# Error in if (NA) { : missing value where TRUE/FALSE needed

所以代码假设main是一个character类对象。这是记录在案的,参数的?terra::plot描述main是:

character. 主绘图标题(每个要绘制的图层一个)

幸运的是(见评论),最近似乎添加了对日期的支持,所以你可以从 Github 安装新版本!

于 2021-12-14T15:12:18.897 回答