r - 用于 R 的堆栈函数(光栅库)的参数

标签 r stack

我正在尝试使用 R 中 Raster 库中的 stack 函数创建一个 RasterStack 对象,

library(raster)

但我对函数中使用的参数有疑问。让我展示一下我在做什么:

###set working directory
setwd("myworkingdirectory")

###Upload variables
v1 <- raster("variable1.tif")
v2 <- raster("variable2.tif")
v3 <- raster("variable3.tif")
v4 <- raster("variable4.tif")

所以,如果我输入:

###Creating RasterStack object
var.stacked <- stack(v1, v2, v3)

函数正常工作并堆叠了三个变量。

但是,我必须针对所需变量数量不同的不同运行执行此过程,因此我创建了一个循环,为每次运行输出一个具有正确数量和类型的变量的字符变量。例如:

###Output from loop
print(num.vars)
[1] "v1" "v3" "v4"         

我尝试编写类似以下代码的内容,希望使该过程正常运行,但事实并非如此:

var.stacked <- stack(num.vars)

Error in .local(.Object, ...) : 
  `myworkingdirectory\e1' does not exist in the file system,
and is not recognised as a supported dataset name.


Error in .rasterObjectFromFile(x, band = band, objecttype = "RasterLayer",  : 
  Cannot create a RasterLayer object from this file. (file does not exist)

为什么 R 试图在我在代码开头设置的工作目录中查找变量名称(在本例中为 v1、v2、v3、v4),而不是像我在默认的 .GlobalEnv 中查找变量名称显式写入 stack(v1, v2...) ?

任何使代码正常工作的帮助将不胜感激。另外,我对 R 的经验不是很丰富,这是我第一次在这里发布问题,所以如果我的问题需要更多澄清,也请告诉我。

提前谢谢您!

最佳答案

因为您将一个字符向量传递给 stack ,然后它会将其解释为当前工作目录中的文件名。相反,如果您已经在 R 中创建了光栅对象,则可以执行此操作...

stack( mget( num.vars , env = .GlobalEnv ) )

mget 获取栅格对象名称的字符向量并返回栅格对象列表。

stack 然后将列表中的栅格堆叠到 stack 中。

关于r - 用于 R 的堆栈函数(光栅库)的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17326232/

相关文章:

c++ - 堆栈内存/堆栈

c - 一种计算堆栈大小的方法

r - 在 ggplot2 中绘制 bootstrap 输出的中位数、置信区间

r - 同时在 dplyr 中对多列进行 Shapiro.test

相当于 R 函数 sweep() 的 Python numpy 或 pandas

c - 在堆栈上声明内存会覆盖先前声明的内存

r - 加快 write.table 的性能

r - 如何同时使用 "for loop"和 "write.csv"?

c - 为什么队列和栈声明为指针?

Android:使用 sharedprefs 进行登录 session 后出现堆栈跟踪错误