挑战矢量修改

时间:2016-11-15 16:18:23

标签: r r-raster

我有一个看起来很简单的问题,但我无法找到解决问题的方法。我需要找到一种方法来改变数值向量,使其增加。一个例子会更清楚......

vec1 <- c(3,3,2,3,1)

进入函数后

  

F(VEC1)

应该成为

# [1]  1 1 2 1 3

同样的方式,

vec2 <- c(1,3,1,2,7)

应该成为

# [1] 1 2 1 3 4

vec3 <- c(2,1,0,0,4)

应该成为

 # [1] 1 2 3 3 4

最初我是那个

as.numeric(as.factor(vec1))

会起作用但它不再起作用了(新版本?)

对于那些想知道我为什么需要它的人来说,这与我在这里介绍的光栅包中的一个错误有关: http://r-sig-geo.2731867.n2.nabble.com/bug-in-raster-stackApply-when-raster-not-in-memory-td7590584.html

但没有回答。然后我必须找到一个解决方法。

我希望它很清楚, 感谢

1 个答案:

答案 0 :(得分:4)

我们可以使用match

创建一个函数
f1 <- function(x){
     match(x, unique(x))
}

f1(vec1)
#[1] 1 1 2 1 3
f1(vec2)
#[1] 1 2 1 3 4