R语言:if和else语句(循环)

4 loops if-statement r function

我正在研究R语言的循环编码,这段代码涉及两个函数.如果value是radius,则应运行period函数而不是radius函数,依此类推.

我使用课堂上的笔记进行编码,但我认为这是错误的.我没有得到任何警告,但如果我在控制台上做:

R<-98
orbit(R)
Run Code Online (Sandbox Code Playgroud)

我会收到这条消息:

Error in orbit(R) : attempt to apply non-function
Run Code Online (Sandbox Code Playgroud)

这是我的功能代码:

# 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)

    }

}
Run Code Online (Sandbox Code Playgroud)

我不认为我完全理解if和else声明.有没有人为我解释一下?还有for语句和if语句有什么区别?

谢谢你的帮助.

iTe*_*ech 5

这一行的问题

Radi <- (G*M/omega^3)*(1/3)
Run Code Online (Sandbox Code Playgroud)

你在哪里缺少*操作

if/else statement允许程序根据某些条件决定执行哪些代码.就像你的代码一样,你有两个代码块,第一个是:

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

只有在某些条件为真时才要执行R == 98,否则执行另一个代码块.

for statement当你想多次重复执行一段代码时使用.假设你要打印数字1-100,写print(1) print(2)100次是不可行的!

你可以用一个简单的for循环来完成这个,例如

for(i in 1:100){
   print(i)
}
Run Code Online (Sandbox Code Playgroud)