对于R中的变量名称和函数的循环

时间:2018-03-07 17:28:14

标签: r raster

下面这个简单的命令非常有效:

pts.cnt1.1deg <- rasterToPoints(boxCnt.1deg, fun=function(r){r>=1})

但是,我需要为许多值(1:100)执行此操作。例如,我尝试了这个选项风箱,它不会这样工作。

for(i in 1:100){
    pts.cnt[i].1deg <- rasterToPoints(boxCnt.1deg, fun=function(r){r>=[i]})
}

以上面的例子为例,如何在该命令上正确包含循环?

3 个答案:

答案 0 :(得分:0)

你可以像这样做一个循环

pts.cnt.1deg <- list()
for(i in 1:100){
    pts.cnt.1deg[[i]] <- rasterToPoints(boxCnt.1deg, fun=function(r){r>=[i]})
}

但在我看来,在内存允许的情况下,做起来会更简单

x <- rasterToPoints(boxCnt.1deg)

然后根据需要设置x

答案 1 :(得分:0)

不要使用循环,它的速度很慢,而且实际上只是解决方法,以后必须撤消。 将栅格转换为点,然后按因子拆分spdf。假设您希望将度数四舍五入到大数位左右。

x <- rasterToPoints(boxCnt.1deg)
x.list<-split(x,round(x$value,-1))

答案 2 :(得分:-1)

我同意MrFlick有更好的方法来做到这一点。您可以使用assign(x, value)函数

完成您的要求
for (i in 1:100) {
    assign(paste0("pts.cnt", i, ".1deg"), rasterToPoints(boxCnt.1deg, fun = function(r) { r >= 1 }))
}