2013-07-30 3 views
-2

У меня есть 4 вектора v1, a1, v2, a2. Я хочу написать код, который может использовать для v1 and a1 или v2 and a2 для удаления максимального значения вектора v1, а также удалить элементы a1 по длине максимального значения v1, также этот код работает для v2, который удаляет максимальную стоимость и удалить значение в a2. Как я могу это сделать в R? Я бы хотел, чтобы код мог работать для любых других векторов, подобных этим.Удалить максимальное значение двух векторов в R

v1 = c(0.25, 0.25, 0.3, 0.3, 0.3, 5, 6, 6.5, 8, 8, 8) 

    a1 = rep(1, length(v1)) 

    v2=unique(v1) 

    a2 = c(2, 3, 1, 1, 1, 3) 

мой результат желание заключается в следующем:

 > v1 
    [1] 0.25 0.25 0.30 0.30 0.30 5.00 6.00 6.50 
    > a1 
    [1] 1 1 1 1 1 1 1 1 
    > a2 
    [1] 2 3 1 1 1 
     > v2 
    [1] 0.25 0.30 5.00 6.00 6.50 
+0

Можете ли вы показать, какие результаты вы ожидали? –

+0

Что вы подразумеваете под «длиной максимального значения' v1' »? –

+0

Значит, что длина (mav (v1)) = 3. – rose

ответ

2

Вы можете сделать это для каждого вектора по отдельности:

v1[-which(v1==max(v1))] 
a1[-which(v1==max(v1))] 

Но это, вероятно, имеет смысл связать их вместе, чтобы вы не не нужно повторять команды, например:

cbind(v1,a1)[-which(v1==max(v1)),] 

Процесс будет одинаковым для v2 и a2:

cbind(v2,a2)[-which(v2==max(v2)),] 

Я должен также добавить, что это возможно сделать это без which с немного другой синтаксис:

cbind(v1,a1)[!v1==max(v1),] 
cbind(v2,a2)[!v2==max(v2),] 
Смежные вопросы