【问题标题】:Error in UseMethod("as.xts") : no applicable method for 'as.xts' applied to an object of class "character"UseMethod("as.xts") 中的错误:没有适用于“as.xts”的方法应用于“字符”类的对象
【发布时间】:2019-04-07 05:30:00
【问题描述】:

我正在编写此代码,它采用变量名称,分配给不同的代码,并返回该代码的最后 252 个周期返回。这是我正在使用的代码:

comp1.a <- 'EFA'
comp2.a<- 'MSFT'
comp3.a <- 'GOOG'
comp4.a <- 'AMZN'
comp5.a <- 'VXX'
comp6.a <- 'M'
comp7.a <- 'SPY'


comp1.b <- noquote(comp1.a)
comp2.b <- noquote(comp2.a)
comp3.b <- noquote(comp3.a)
comp4.b <- noquote(comp4.a)
comp5.b <- noquote(comp5.a)
comp6.b <- noquote(comp6.a)
comp7.b <- noquote(comp7.a)

getSymbols(comp1.a, src='yahoo', from='2006-01-01')
getSymbols(comp2.a, src='yahoo', from='2006-01-01')
getSymbols(comp3.a, src='yahoo', from='2006-01-01')
getSymbols(comp4.a, src='yahoo', from='2006-01-01')
getSymbols(comp5.a, src='yahoo', from='2006-01-01')
getSymbols(comp6.a, src='yahoo', from='2006-01-01')
getSymbols(comp7.a, src='yahoo', from='2006-01-01')

Asset.weekly <- periodReturn(tail(Adj.Close,252),'weekly')
comp1.weekly <- periodReturn(tail(comp1.b,252),'weekly')
comp2.weekly <- periodReturn(tail(comp2.b,252),'weekly')
comp3.weekly <- periodReturn(tail(comp3.b,252),'weekly')
comp4.weekly <- periodReturn(tail(comp4.b,252),'weekly')
comp5.weekly <- periodReturn(tail(comp5.b,252),'weekly')
comp6.weekly <- periodReturn(tail(comp6.b,252),'weekly')
comp7.weekly <- periodReturn(tail(comp7.b,252),'weekly')

你可能想知道为什么我做了整个 noquote 的事情。这是因为如果用于期间返回数据的类是一个字符,它就不起作用。

现在,当我这样做时,我得到了这篇文章的标题:

Error in try.xts(x) : 
Error in UseMethod("as.xts") :   no applicable method for 'as.xts' 
applied to an object of class "noquote"

知道我做错了什么吗?感谢您的帮助、时间和努力。

【问题讨论】:

  • 嗨 Zingg,您能否创建一个最小可重现示例,以便我们可以将您的代码剪切并粘贴到我们的 R 会话中,并得到与您相同的错误,以及您正在寻找的输出,这将告诉我们当你的问题解决了?谢谢:)
  • 错误消息说您正在尝试将“noquote”类转换为 R 不知道如何的时间。

标签: r xts quantmod


【解决方案1】:

您可以通过将 env 参数与代码向量一起使用 getSymbols() 来更紧凑地执行此操作。

tickers <- c('EFA', 'MSFT', 'GOOG', 'AMZN', 'VXX', 'M', 'SPY')
# Create a new environment to store the getSymbols() results
portf <- new.env()
# Import ticker data, storing it in the 'portf' environment
getSymbols(tickers, src = 'yahoo', from = '2006-01-01', env = portf)

# Loop over each object in 'portf',
# and calculate the weekly adjusted close return for the last year
wkly <- lapply(portf, function(x) { periodReturn(tail(Ad(x), 252), 'weekly') })

# Merge the weekly returns into one xts object
wkly <- setNames(Reduce(merge, wkly), names(wkly))

【讨论】:

    猜你喜欢
    • 2021-10-09
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 2019-09-12
    • 2020-04-10
    • 2022-12-15
    • 2023-01-22
    • 2018-03-03
    相关资源
    最近更新 更多