【发布时间】:2021-07-04 15:58:56
【问题描述】:
我想计算股票收益,但出现错误
return=function(x)
{
n=length(x)
x=matrix(x,nrow=n,ncol=1)
return_data=matrix(nrow=n-1,ncol=1)
for(i in 1:n-1)
{
return_data[i]=log(x[i+1,]/x[i,])
}
return_data
}
R_JSMR=return(JSMR)
x[i + 1, ]/x[i, ] 中的错误:二元运算符的非数字参数
我该如何解决这个问题?请帮助我,非常感谢你:)
【问题讨论】:
-
JSMR的结构是什么? -
不要将你的函数命名为
return。return是用于构建函数的已定义函数。可能会发生可怕的事情...最好将其命名为my_return或类似的名称。 -
for(i in 1:n-1)中缺少括号,应该是1:(n-1)。此外,这并没有错,但您没有使用x矩阵结构,只有返回值。将x强制转换为矩阵毫无意义。删除该指令并在循环中执行log(x[i+1]/x[i]).