R, проблемы с использованием цикла for, если еще - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь проверить, все ли элементы внутри вектора одинаковы. Я использую этот код:

if( isTRUE(for(i in 1:length(x)){x[1]==x[i]})){print(x[1])} else{print("several")

Теперь предположим,

x <- c(0,0,0,0,0,0,0,0,0,0,0) 

Здесь код должен возвращать «0», а если

x <- c(0,0,0,0,0,1,0,0,0,0,0) 

должно возвращаться «несколько». В обоих случаях я получаю «несколько», любая идея, почему не работает, как хотелось бы? Заранее спасибо.

1 Ответ

2 голосов
/ 03 апреля 2019

есть более простой способ:

if (length(unique(x)) == 1) {
  print(x[1])
} else {
  print("several")
}

Если вы хотите сравнить все компоненты x с первым компонентом, вы должны использовать all вместо цикла for:

if (all(x == x[1])) {
  print(x[1])
} else {
  print("several")
}

Результат обоих подходов одинаков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...