我正在研究R语言的循环编码,这段代码涉及两个函数。如果value是radius,则应运行period函数而不是radius函数,依此类推。
我使用课堂上的笔记进行编码,但我认为这是错误的。我没有得到任何警告,但是如果我在控制台上做的话:
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语句有什么区别?
感谢您的帮助。
答案 0 :(得分:5)
此行中的问题
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)
}