Как исправить код ошибки «отсутствует значение там, где требуется ИСТИНА / ЛОЖЬ» - PullRequest
1 голос
/ 29 марта 2019

Я хочу взять набор данных (df_freeGammas) и обобщить некоторые компоненты набора. Набор данных разбит на предметы и разные номера тестов (субъект 1, тест 1). Некоторые предметы имеют более 1 теста для них. Каждый тест имеет подмножество 16 строк данных, соответствующих тесту и предмету. Я хочу иметь возможность использовать цикл или вложенный цикл для помещения номера субъекта в матрицу результатов. Я нашел способ сделать это, но я продолжаю получать ошибку: "Ошибка в if (df_freeGammas [n, 2]! = Df_freeGammas [n + 1, 2]) {: пропущенное значение там, где требуется ИСТИНА / ЛОЖЬ Пожалуйста, помогите.

Я попытался добавить больше циклов if, а также цикл while.

for (n in 1:nrow(df_freeGammas)){
+    if (df_freeGammas[n,2] != df_freeGammas[n+1,2]){
+         Results[n/16,1] = df_freeGammas[n,1]}
+       else if (df_freeGammas[n,1] != df_freeGammas[n+1,1]){
+           Results[n/16,1] = df_freeGammas[n,1]}
+         else 
+           invisible()

Я ожидаю результата, но без сообщения об ошибке.

1 Ответ

0 голосов
/ 01 апреля 2019

Похоже, что одна из ваших проверок на равенство оценивается как "NA" вместо TRUE / FALSE.

Одним из возможных решений было бы добавление пункта для случаев NA, как описано здесь .

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

(df_freeGammas[n,2] != df_freeGammas[n+1,2]) & !is.na(df_freeGammas[n,2] != df_freeGammas[n+1,2])

Вышеприведенное вернет TRUE, только если два значения не равны, а проверка на равенство оценивается как Non-NA.

Как всегда, обязательно отметьте этот ответ как принятый, если он решит проблему.

Спасибо!

...