如何在栅格名称中插入空格?R [英] How to insert spaces into rasternames? R

查看:26
本文介绍了如何在栅格名称中插入空格?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方法为rasterrasterStack类的对象指定名称给出了一个提示,说明我们如何能够规避该问题。

TLDR:

predstack[[1]]@data@names <- "MSR670 max"

应将名称直接分配给栅格,而不使用names()函数及其实现的方法。

由于不打算以这种方式分配栅格名称,因此此方法可能会出现问题,但在您的特定情况下可能正好够用。

这篇关于如何在栅格名称中插入空格?R的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆