Я хочу записать в два разных столбца одной строки в цикле if else - PullRequest
0 голосов
/ 02 марта 2020

Я пытаюсь использовать для, если еще l oop, чтобы перебрать мои данные. Для одного из циклов я хочу изменить два разных столбца, один с формулой, а другой с письменным объяснением того, почему число такое, какое оно есть. Ниже приведен фрагмент моего кода.

library(MASS)
library(plyr)
library(dplyr)
library(tidyverse)

if(((SGR >= 5 ) & (SGR30 <= 0 | is.na(SGR30)) & (SGR20 <= 0 | is.na(SGR20)) & (SGR10 <= 0 | is.na(SGR10)))) 
    {
    (DataWSGR[k,24] <- ((2/10*FactoredAADT*1) + FactoredAADT)) & (DataWSGR[k,25] <- "1%")
    }

Когда я запускаю свой код, я получаю сообщение об ошибке с надписью

Error in (DataWSGR[k, 24] <- ((2/10 * FactoredAADT * 1) + FactoredAADT)) &  :
 operations are possible only for numeric, logical or complex types.

Что я делаю неправильно, чтобы изменить оба столбца?

1 Ответ

0 голосов
/ 02 марта 2020

Добро пожаловать в stackoverflow !!! В следующий раз приведите воспроизводимый пример. Причина, по которой вы получаете эту ошибку, заключается в том, что оператор & является логическим оператором, который используется только в логических тестах и ​​сравнениях, а не в присваиваниях.

Для того, что вы хотите, вы должны поместить назначения в две отдельные строки вот так:

library(MASS)
library(plyr)
library(dplyr)
library(tidyverse)

if(((SGR >= 5 ) & (SGR30 <= 0 | is.na(SGR30)) & (SGR20 <= 0 | is.na(SGR20)) & (SGR10 <= 0 | is.na(SGR10)))) 
    {
    (DataWSGR[k,24] <- (2/10*FactoredAADT*1) + FactoredAADT) 
     DataWSGR[k,25] <- "1%"
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...