具有挑战性的载体修饰
Challenging vector modification
我遇到了一个看起来很简单的问题,但我想不出简单的方法来解决它。我需要找到一种方法来将数值向量转换为递增的方式。举个例子会更清楚...
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
但没有得到答复。然后我必须找到解决方法。
我希望这很清楚,
谢谢
我们可以用 match
创建一个函数
f1 <- function(x){
match(x, unique(x))
}
f1(vec1)
#[1] 1 1 2 1 3
f1(vec2)
#[1] 1 2 1 3 4
我遇到了一个看起来很简单的问题,但我想不出简单的方法来解决它。我需要找到一种方法来将数值向量转换为递增的方式。举个例子会更清楚...
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
但没有得到答复。然后我必须找到解决方法。
我希望这很清楚, 谢谢
我们可以用 match
f1 <- function(x){
match(x, unique(x))
}
f1(vec1)
#[1] 1 1 2 1 3
f1(vec2)
#[1] 1 2 1 3 4