用户定义的功能,以ticker作为输入?

用户定义的功能,以ticker作为输入?,r,function,ticker,R,Function,Ticker,这是我现在的代码: f=function(Symbol, start, end, interval){ getSymbols(Symbols=Symbol, from=start, to= end) Symbol=data.frame(Symbol) a=length(Symbol$Symbol.Adjusted) b=a/interval c=ceiling(b) origData=as.data.frame(matrix(`length<-`(Sym

这是我现在的代码:

f=function(Symbol, start, end, interval){
  getSymbols(Symbols=Symbol, from=start, to= end)
  Symbol=data.frame(Symbol)
  
  a=length(Symbol$Symbol.Adjusted)
  b=a/interval
  c=ceiling(b)
  
  origData=as.data.frame(matrix(`length<-`(Symbol$Symbol.Adjusted, c * interval), ncol = interval, byrow = TRUE))
  

  return(origData)
 
}
f("SPY", "2012-01-01", "2013-12-31", 10)
f=函数(符号、开始、结束、间隔){
getSymbols(符号=符号,从=开始,到=结束)
Symbol=数据帧(Symbol)
a=长度(Symbol$Symbol.已调整)
b=a/间隔
c=天花板(b)

origData=as.data.frame(matrix(`length我还没有弄清楚
data.matrix
调用中的一组表达式应该做什么,您没有努力解释您的意图。但是,您的错误会发生在更远的地方。如果您对
str(Symbol)进行调试调用
您将看到
Symbol
将计算为“SPY”但这只是一个字符值,而不是一个R对象名。您拥有的对象名为
SPY
,当您只能访问字符值时,检索对象值的方法是使用R函数
get
,因此请尝试在函数内的getSymbols调用后添加此函数:

 library(quantmod) # I'm assuming this was the package in use

  ...
      Symbol=data.frame( get(Symbol) )
      str(Symbol)  # will print the result at your console
      ....
      # then perhaps you can work on what you were trying inside the data.matrix call
您还会发现名称
符号.Adjusted
将不起作用(因为R不是宏语言)。您需要执行以下操作:

 a=length( Symbol[[ paste0(Symbol, ".Adjusted")]] )

哦,等等。你重写了
Symbol
的值。这不起作用。你需要为数据帧使用不同的名称。那么,为什么不编辑你的问题来修复我迄今为止发现的错误,并描述你在使用
as.data.frame

@IRTFM时试图做的事情呢?Incorpor通过这些更改,您可以将功能更改为:

library(quantmod)

f = function(Symbol, start, end, interval){
  getSymbols(Symbols=Symbol, from=start, to= end)
  data= get(Symbol)
  col = data[, paste0(Symbol, '.Adjusted')]
  a=length(col)
  b=a/interval
  c=ceiling(b)
  origData= as.data.frame(matrix(`length<-`(col, c * interval), 
                          ncol = interval, byrow = TRUE))
  return(origData)
}

f("SPY", "2012-01-01", "2013-12-31", 10)
库(quantmod)
f=功能(符号、开始、结束、间隔){
getSymbols(符号=符号,从=开始,到=结束)
数据=获取(符号)
col=数据[,粘贴0(符号,'.Adjusted')]
a=长度(col)
b=a/间隔
c=天花板(b)
origData=as.data.frame(矩阵(`length