【问题标题】:R language: If and else statement (loop) [closed]R语言:If和else语句(循环)[关闭]
【发布时间】:2013-01-27 04:53:21
【问题描述】:

我正在对 R 语言进行循环编码,这段代码涉及两个函数。如果值为半径,则应运行周期函数而不是半径函数,依此类推。

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

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)

    }

}

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

感谢大家的帮助。

【问题讨论】:

  • Radi &lt;- (G*M/omega^3)(1/3) 此行缺少*

标签: r function loops if-statement


【解决方案1】:

这一行的问题

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

你错过*操作的地方

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

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

在某些条件为真时执行,即R == 98,否则执行另一段代码。

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

您可以通过简单的for 循环来执行此操作,例如

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

【讨论】:

  • 非常感谢您的帮助。这很有道理!