2016-12-13 21 views
2

我试图写一个公式,将返回一个股票单日回报率来提取一天的回报,但我相信即时通讯具有与该periodReturnsubsetquantmod < - 遇到问题编写公式无头

的数据类型的麻烦
periodReturn(ticker,period='daily',subset='20161010::20161010') 

的作品,但

dayReturn <- function(ticker,date) { 

ticker <- c(MSFT) 
date <- c(20161010) 
dayreturn <- periodReturn(ticker,period='daily',paste("subset='",date,"::",date,"'")) 
dayreturn 
} 

给出错误

dayReturn(msft,20161010)

daily.returns 
Warning messages: 
1: In as_numeric(YYYY) : NAs introduced by coercion 
2: In as_numeric(MM) : NAs introduced by coercion 
3: In as_numeric(DD) : NAs introduced by coercion 
> 

在此先感谢您的任何建议!

回答

1

在你的dayReturn函数中,你有几个语法错误。

下面是可重复的代码从你的函数中,将工作提取:

library(quantmod) 
getSymbols("MSFT") 

ticker <- c(MSFT) 
date <- c("20161010") 
dayreturn <- periodReturn(ticker,period='daily',subset = paste0(date,"::",date,"'")) 

你的错误:

  1. date想成为一个字符串,而不是一个数字编号。
  2. 您希望子集覆盖的日期字符串不正确。您想在边periodReturn中使用subset = "YYYYMMDD::YYYYMMDD"或(subset = "YYYY-MM-DD::YYYY-MM-DD")。

你的职能将更多的正常工作是这样的:

dayReturn <- function(ticker, date1 , date2) { 
    dayreturn <- periodReturn(ticker,period='daily',subset = paste0(date1,"::",date2,"'")) 
    dayreturn 
} 

dayReturn(MSFT, "20161010", "20161012") 
# daily.returns 
# 2016-10-10 0.004152284 
# 2016-10-11 -0.014645107 
# 2016-10-12 -0.001398811 
+0

太感谢你了,这个固定的问题。真的很感激时间和帮助 - –

+0

@FrankDrin不用担心。如果您觉得这回答了您的问题(以及您提出的所有其他问题),您可能会考虑接受答案,以及其他人对其他问题的回答(绿色标记)。 – FXQuantTrader

+0

正如你可以看到FXQuantTrader ...仍然是新的:)完成,谢谢你的头! –