#r #runtime-error
#r #время выполнения-ошибка
Вопрос:
i <- 2
j <- 0
for (i in 2:1000) {
if(return.prime(i)){j = j 1}
i = i 1
}
Я хочу проверить, сколько существует простых чисел от 1 до 1000, используя мою собственную функцию return.prime
, которая возвращает TRUE, когда вводимое число является простым, и FALSE, когда вводимое число не является простым. return.prime
Функция — это приведенная ниже функция, и она верна.
return.prime <- function(d){
if(d ==1 ){print(FALSE)}
if (d == 2){
print(TRUE)
}
if(d !=2 amp;amp; d!=1){
if(any(d %% (2:(d-1)) == rep(0,d-2))==TRUE){
print(FALSE)}
else
print(TRUE)
}
}
Проблема в том, что когда я запускаю свою программу, она говорит:
[1] TRUE
Error in if (return.prime(i)) { : argument is of length zero
Я не знаю, что вызывает нулевую длину.
Ответ №1:
R таким образом не работает. Вы просто заставляете функцию печатать слово «TRUE» или «FALSE». Вместо этого вам нужно ?верните TRUE
или FALSE
. Рассмотрим:
return.prime <- function(d){
if(d==1){ return(FALSE) }
if(d==2){ return(TRUE) }
if(d !=2 amp;amp; d!=1){
if(any(d %% (2:(d-1)) == rep(0,d-2))==TRUE){
return(FALSE)
} else{
return(TRUE)
}
}
}
i <- 2
j <- 0
for (i in 2:1000) {
if(return.prime(i)){j = j 1}
i = i 1
}
j # [1] 168
Комментарии:
1. @CatKatherine, если это решило вашу проблему, вы могли бы принять это, щелкнув галочку под итогом голосования слева от нее.