2014-10-23 3 views
0

Проблема может быть простой, но я не могу ее решить: У меня есть числовой вектор, мне нужно сравнить его максимум/2 с каждым членом, кроме его максимума, и если все эти сравнения FALSE, a = a + 1. Я получил:Сравните каждый элемент вектора с его номером

comp=c(6.674971, 11.208241, 18.296459, 5.165752, 123.000000) 
a=0 
if (max(comp)/2<comp[comp < max(comp)]){ 
a=a+1 
} 
a 

Заранее спасибо.

+0

как этот 'a <- ifelse (все (max (comp)/2

ответ

0

Условие истинно, если:

sum(2*comp > max(comp)) ==1 

В этом случае, я бы написать это без использования ìf:

a <- (sum(2*comp > max(comp)) ==1) + 1 
0

Я не знаю, если вы хотите добавить 1 каждый вы найдете элемент больше, чем max/2, и это то, что я вам показываю. Если вы хотите, чтобы все были ложными, добавьте эту строку в конец.

if (a>0) 
    a=1; 

Я думаю, что это будет работать, не компилируюсь, потому что здесь я не имею R компилятора, но это идея:

comp=c(6.674971, 11.208241, 18.296459, 5.165752, 123.000000) 
a=0 
temp=comp/max(comp) 
for (n in 1:length(comp)) 
    { if ((temp(i)>max(comp)/2)&&(temp(i)!1)) 
     a=a+1 
    } 

Надеется, что это помогает.

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