2017-01-20 3 views
0

У меня есть вектор:Проблема в замене функции в R

> a <- c(0,1,2,3,4) 

Я пытаюсь заменить значение все с этим значением увеличивается на 1, как показано ниже:

a <- (1,2,3,4,5) 
> replace(a,a==4,5) 
[1] 0 1 2 3 5 

Но когда я пытаюсь заменить 3 на 4, возникает некоторая проблема

replace(a,a==3,4) 
[1] 0 1 2 4 4 

Оба 3 a d 5 становятся преобразованы в 4.

и еще раз, когда я пытаюсь заменить 2 с 3, то же самое происходит

> replace(a,a==2,3) 
[1] 0 1 3 3 4 

Может кто-то указать на то, что я делаю неправильно здесь?

+5

вы ищете для a <-a + 1 ?? – Jean

+0

@waterling: Спасибо! – Praveen

ответ

2

replace не меняет своих аргументов.

> a = c(0,1,2,3,4) 
> replace(a,a==2,99) 
[1] 0 1 99 3 4 

Но a все та же:

> a 
[1] 0 1 2 3 4 

так, когда вы думали, что вы превратили 4 в 5 в a Вы не имели. Используйте возвращаемое значение, если вы хотите изменить a:

> a 
[1] 0 1 2 3 4 
> a = replace(a,a==2,99) 
> a 
[1] 0 1 99 3 4 

[Как было отмечено в комментариях, есть более эффективные способы, чтобы добавить 1 ко всем значениям вектора, a=a+1 являются лучшим]

+0

получил! благодаря! – Praveen

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

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