如何在栅格名称中插入空格?R [英] How to insert spaces into rasternames? R
本文介绍了如何在栅格名称中插入空格?R的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我尝试在栅格堆栈的层名称中添加空格
names(predstack)[[1]] <- "MSR670 max"
> names(predstack)[[1]]
[1] "MSR670.max"
我知道这很愚蠢,但我计算了一个模型,花了7天的时间计算。不幸的是,有一个模型变量的名称中包含空格。 现在我想对堆栈进行预测,但这不起作用,因为出现以下错误:
> Prediction2model <- raster::predict(predstack, var2model)
Error in predict.randomForest(modelFit, newdata) :
variables in the training data missing in newdata
> names(predstack)
[1] "MSR670.max" "GLI201809_means"
[3] "MSR670201809_sd" "MVI201805_max"
> var2model$selectedvars
[1] "MSR670 max" "GLI201809_means"
[3] "MSR670201809_sd" "MVI201805_max"
因此,我的问题是:如何在栅格图层名中添加空格字符?
或者是否可以在以后更改随机林模型中的变量名称?
谢谢您的建议!
推荐答案
names(predstack)[[1]] <- "MSR670 max"
未按预期为您工作的原因是raster
包中实现names()
函数的方式。
Here您可以看到在RasterStack
类的对象上调用names()
函数时应用的方法。在第60行,该方法调用validNames()
函数,该函数被定义为here。
validNames()
又依赖于名为make.names()
的函数,该函数基本上确保字符串中没有空格和其他不需要的字符(例如您的栅格名称)。
因此,查看the waynames
方法为raster
或rasterStack
类的对象指定名称给出了一个提示,说明我们如何能够规避该问题。
TLDR:
predstack[[1]]@data@names <- "MSR670 max"
应将名称直接分配给栅格,而不使用names()
函数及其实现的方法。
由于不打算以这种方式分配栅格名称,因此此方法可能会出现问题,但在您的特定情况下可能正好够用。
这篇关于如何在栅格名称中插入空格?R的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文