我正在尝试构建一个函数来计算幅度和方向 矢量运算。为了解决在pi / 2和-pi / 2域内反向触发功能被限制的问题,如果e小于0,我需要向e添加2pi。但是我遇到了“错误:意外”} 'in“}”一旦我添加了if else行。是否有人能够向我解释原因?
vectorMD <- function(x){
c=x[1:2]-x[3:4]
mt <- function(x) {round(sqrt(sum(x^2)),1)}
d <- round(mt(c),1)
e <- round(atan(c[2]/c[1]),1)
if(e < 0){e <- e+2*2pi
return(e)}
paste("magnitude =",d,"direction =",e)
}
答案 0 :(得分:1)
如果条件你必须给2 * pi而不是2pi,因为pi已经是3.14这样的值你不能指定为2pi,就像23.14所以你必须指定它有2 * pi就像2 * 3.14
代码:
vectorMD <- function(x){
c=x[1:2]-x[3:4]
mt <- function(x) {round(sqrt(sum(x^2)),1)}
d <- round(mt(c),1)
e <- round(atan(c[2]/c[1]),1)
if(e < 0){e <- e+2*2*pi
return(e)}
paste("magnitude =",d,"direction =",e)
}
答案 1 :(得分:0)
试试这个,把功能&#34; mt&#34;功能之外&#34;矢量&#34;。
mt <- function(x)
{
round(sqrt(sum(x^2)),1)
}
vectorMD <- function(x)
{
c=x[1:2]-x[3:4]
d <- round(mt(c),1)
e <- round(atan(c[2]/c[1]),1)
if(e < 0)
{
e <- e+2*2pi
return(e)
}
paste("magnitude =",d,"direction =",e)
}