2016-10-18 6 views
-5

меня есть кодОшибка `Ошибка: неожиданный '}' в "}"`

Eratosthenes <- function(n) { 
    if (n >= 2) { 
    sieve <- seq(2,n) 
    primes <- c() 
    for (i in seq(2,n)) { 
     if (any(sieve == i)) { 
     primes <- c(primes, i) 
     sieve <- c(sieve[(sieve %% i) ! = 0], i) 
     } 
    } 
    return(primes) 
} else { 
    stop("Input value of n should be at least 2.") 
    } 
} 

с ошибкой Error: unexpected '}' in "}". Однако все кажется идеальным с }, но я не ошибаюсь. Может ли кто-нибудь сказать мне, где моя ошибка?

+3

вы действительно используете rstudio? если бы вы были, проблемы должны быть очевидны. Также скопируйте и вставьте свой код обратно в rstudio, он сделает все необходимые отступы для вас и покажет вам, где начинаются и заканчиваются скобки – rawr

+0

Да, но даже после правильной манипуляции я получил ту же ошибку – SpinningAtInfinity

+0

вынул пространство с ' ! = '. –

ответ

1

Проблема, как представляется, здесь: sieve <- c(sieve[(sieve %% i) ! = 0], i). Я предполагаю, что вы хотите «не равно», поэтому должно быть sieve <- c(sieve[(sieve %% i) != 0], i).

Вот отформатированный код, который работает для меня:

Eratosthenes <- function(n) { 
    if (n >= 2) { 
    sieve <- seq(2,n) 
    primes <- c() 
    for (i in seq(2,n)) { 
     if (any(sieve == i)) { 
     primes <- c(primes, i) 
     sieve <- c(sieve[(sieve %% i) != 0], i) 
     } 
    } 
    return(primes) 
    } else { 
    stop("Input value of n should be at least 2.") 
    } 
} 
1

Я не знаю R, и я не могу судить о вашем коде, но разве вы не теряете скобки в своем внутреннем IF-заявлении?

так:

for (i in seq(2,n)) { 
     if (any(sieve == i)) { 
      primes <- c(primes, i) 
      sieve <- c(sieve[(sieve %% i) != 0], i) 
     } 
} 
+0

lol, собирался сказать то же самое. Вот почему правильный отступ имеет важное значение. – Profex

+0

Извините, но даже после этого я получил ту же ошибку – SpinningAtInfinity

Смежные вопросы