2013-02-11 4 views
4

R 언어의 루프 코딩 작업을하고 있으며이 코드에는 두 가지 기능이 있습니다. 값이 반지름 인 경우 반지름 함수 대신 마침표를 실행해야합니다.R 언어 : If 및 else 문 (루프)

클래스의 내 노트를 사용하여 코딩했는데 잘못 생각합니다. 나는 어떤 경고를 얻을 수 있지만 콘솔에서 할 경우하지 않습니다

R<-98 
orbit(R) 
나는이 메시지를 얻을 것이다

: 이것은 내 기능 코드

Error in orbit(R) : attempt to apply non-function 

:

# Two functions: period and radius 
# If a value you input is a period (in minutes), radius function should be used (radius(R)) 
# If a value you input is a radius (in km), period function should be used (period(R)) 
# R is radius in km or period in minutes 


orbit <- function(R){ 
    G <-6.673*10^-11 
    M <- 5.972*10^24 # in kg 

    if(R == 98){ 
      omega <- 2*pi/R # pr is period for one rotation 

      Radi <- (G*M/omega^3)(1/3) 
      print(Radi) 
     } 
    else { 

     Peri <- 2*pi*sqrt(R^3/G*M) 
     print(Peri) 

    } 

} 

내가 돈을 ' 나는 완전히 이해하고 있다고 생각한다. 아무도 나를 위해 그것을 설명합니까? 또한 for 문과 if 문 사이의 차이점은 무엇입니까?

도움 주셔서 감사합니다.

+0

Radi <- (G * M/오메가^3) (1/3)'이 행에는'*'이 없습니다. – joran

답변

5

당신이 * 작동

if/else statement 누락이 줄

Radi <- (G*M/omega^3)*(1/3) 

의 문제는 프로그램이 어떤 조건을 기반으로 실행되는 코드를 결정할 수 있습니다. 코드에서, 당신은 코드의 두 블록이처럼 처음이다 : 당신은 몇 가지 조건이 R == 98 즉 해당하는 경우 에만을 실행하려는

omega <- 2*pi/R # pr is period for one rotation 
Radi <- (G*M/omega^3)(1/3) 
print(Radi) 

, 그렇지 않으면 당신은 코드의 다른 블록을 실행합니다.

for statement은 여러 번 코드 블록을 반복적으로 실행하려는 경우에 사용됩니다. 1-100의 숫자를 인쇄하려고한다고 가정하면 print(1)print(2) ... 100 번을 쓸 수 없습니다!

간단한 for 루프로이 작업을 수행 할 수 있습니다.

for(i in 1:100){ 
    print(i) 
} 
+0

도움을 주셔서 대단히 감사합니다. 이것은 많은 의미가 있습니다! –