【问题标题】:R argument is missing, with no default缺少 R 参数,没有默认值
【发布时间】:2017-09-22 02:55:23
【问题描述】:

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

#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”,没有默认值


【问题讨论】:

  • 错误告诉您缺少x2,这就是您所说的第二个参数。 “...,没有默认值”部分是因为您可以使用 x2 定义您的函数,该函数具有 func1 &lt;- function(x1, x2 = 4) {...} 中的默认值。
  • 也许你想要func1(p[i - 1],p[i])而不是你拥有的。

标签: r csv


【解决方案1】:

您的函数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)
} 

【讨论】:

    【解决方案2】:

    谢谢你们,你们所有的回答都启发了我。我想我找到了解决办法。

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

    【讨论】:

      【解决方案3】:

      基本上,R 中的这些计算不需要 func
      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])
      

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

      【讨论】:

        猜你喜欢
        • 2021-09-17
        • 1970-01-01
        • 2021-07-30
        • 1970-01-01
        • 2020-01-14
        • 1970-01-01
        • 2021-03-10
        • 2023-01-13
        • 2014-03-15
        相关资源
        最近更新 更多