У меня есть следующая таблица (5 столбцов и 3 строк) называется коврик:Логические операторы, если-то еще в R
AC CA RES
1 0
2 2
1 3
0 0
0 1
операция выполняется в mat[1]/mat[1]+mat[2]
Я проверяю для следующих целей: 1) Если оба столбца строки равны нулю, результат должен быть NA. 2) Если только один столбец строки равен нулю, а другой имеет ненулевое число, приступайте к вычислению. (Даже если числитель 0, это нормально)
настоящее время я использую это, если-иначе структура внутри для цикла происходит построчно:
if(mat[b,1]>=0|mat[b,2]>=0){mat[b,3]<-(mat[b,1]/(mat[b,1]+mat[b,2]));}
else{is.na(mat[b,3])=TRUE;}
Я получаю следующее сообщение об ошибке:
1: In Ops.factor(mat[b, 1], 0) : >= not meaningful for factors
2: In Ops.factor(mat[b, 2], 0) : >= not meaningful for factors
Есть ли более плавный способ сделать это?
Номера всегда целые и всегда равны 0 или больше. Я хотел бы использовать apply
, но как напрямую назначить результаты apply
в 3-й столбец?
хороший, но все же это не ошибка. вам нужно будет сделать: 'mat [] <- lapply (mat, function (x) as.numeric (as.character (x)))', чтобы преобразовать столбцы в числовые из коэффициента. – Arun
Объединяя оба ваших ответа, он работает как шарм. Спасибо вам обоим :) – user2211355