2016-11-15 6 views
2

У меня есть то, что кажется простой проблемой, но я не могу понять, как это исправить. Мне нужно найти способ преобразования числового вектора таким образом, чтобы он увеличивался. Пример из будет яснее ...Сложная модификация вектора

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

но не получил ответа. Затем я должен найти обходное решение.

Я надеюсь, что это ясно, Благодаря

ответ

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 
+0

именно такой ответ, который я искал! Отлично! Большое спасибо за быстрый ответ! – Bastien

 Смежные вопросы

  • Нет связанных вопросов^_^