繁体   English   中英

R 缺少参数,没有默认值

[英]R argument is missing, with no default

我想计算数据的对数回报。 我定义了一个function,想要加载数据。 但系统总是提到缺少第二个因素。 否则它只计算行号的对数。

#read data
data <- read.csv(file="E:/Lect-1-TradingTS.csv",header=TRUE)
mode(data)
p<-data["Price"]


#func1
func1 <- function(x1,x2)
{
  result <- log(x2)-log(x1)
  return(result)
} 


#calculate log return
log_return<-vector(mode="numeric", length=(nrow(data)-1))
for(i in 2:nrow(p))
{
  log_return[i-1] <- func1(p[(i-1):i])
}

func1(p[(i - 1):i]) 中的错误:缺少参数“x2”,没有默认值


您的函数func1被定义为接受两个参数,但您传递给它一个参数:向量p[(i-1):i] ,它有两个元素,但仍被视为单个对象。 要解决此问题,您需要传递两个单独的参数p[i-1]p[i] 或者,修改 func1 的定义以接受二元素向量:

func1 <- function(v)
{
  x1 <- v[1]
  x2 <- v[2]
  result <- log(x2)-log(x1)
  return(result)
} 

谢谢大家,你们的回答都给了我启发。 我想我找到了解决方案。

log_return[i-1] <- func1(p[(i-1),"Price"],p[(i),"Price"])

基本上你不需要 R 中的那些计算的函数
R 的矢量化在这些情况下派上用场

data <- read.csv(file="E:/Lect-1-TradingTS.csv",header=TRUE)
mode(data)
p <- data[["Price"]]
logrets <- log(p[2:length(p)]) - log(p[1:length(p)-1])

这种矢量化计算通常也会大大优于您“手动”定义的任何 function。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM