Я пытаюсь решить викторину с помощью R, но мой код работает неправильно. Я попробовал отладку, но кажется, что оператор ifelse не работает на определенных числах, которые кажутся довольно случайными.R: Как использовать инструкцию ifelse для вектора символов
Вот викторины: http://puzzles.nigelcoldwell.co.uk/six.htm
switches <- rep("off", 100)
for(i in 1:100){
k <- c(seq(i, 100, i))
ifelse(switches[k] == "off", switches[k] <- "on", switches[k] <- "off")
}
Когда я запускаю этот код, я получаю "на" для 14, 22, 26, 30, 34, и т.д., в которых я должен был получить "от". Есть ли ошибка в том, как я применил инструкцию ifelse к вектору с векторизованным индексом?
Когда я запускаю свой код, я получаю «on» для 1, 4, 9, 16, ... как и должно быть. Проблема в том, что я тоже получаю «на», где я не должен. Например, 14 должно быть «выключено», но оно «включено» в моем коде. Мне интересно, есть ли логический недостаток в моем коде или просто что я написал в плохом синтаксисе. – morty
@MinchulShin Запустив код в моем сообщении, он дает '[1] 1 4 9 16 25 36 49 64 81 100' для значений« on » – akrun
@MinchulShin Также на основе выходных данных это могут быть« переключатели [(1:10)^2] <- "on" ' – akrun