R 充分利用性能分析数据

R 充分利用性能分析数据,r,sapply,performanceanalytics,R,Sapply,Performanceanalytics,我有一个由返回时间序列组成的数据帧,它有以下列 date x1 x3 x8 x11 x、 R是由返回组成的数据帧 我想使用性能分析工具中的findDrawdowns方法,并将其应用于每个时间序列。我想将结果存储在一个列表中,这样我就可以访问findDrawdowns的所有输出 sapply(x.R, sortDrawdowns(findDrawdowns)) 上面的命令生成下面的命令。不确定如何访问这些值。。非常感谢您的帮助 x1 x3

我有一个由返回时间序列组成的数据帧,它有以下列

date x1 x3 x8 x11
x、 R是由返回组成的数据帧

我想使用性能分析工具中的findDrawdowns方法,并将其应用于每个时间序列。我想将结果存储在一个列表中,这样我就可以访问findDrawdowns的所有输出

sapply(x.R,  sortDrawdowns(findDrawdowns))
上面的命令生成下面的命令。不确定如何访问这些值。。非常感谢您的帮助

             x1          x3         x8         x11      
return       Numeric,47 Numeric,47 Numeric,47 Numeric,49
from         Numeric,47 Numeric,47 Numeric,47 Numeric,49
trough       Numeric,47 Numeric,47 Numeric,47 Numeric,49 
to           Numeric,47 Numeric,47 Numeric,47 Numeric,49 
length       Numeric,47 Numeric,47 Numeric,47 Numeric,49 
peaktotrough Numeric,47 Numeric,47 Numeric,47 Numeric,49
recovery     Numeric,47 Numeric,47 Numeric,47 Numeric,49 
您需要一个嵌套的SAPPY,因为sortDrawdowns将返回无法以二维显示的所有绘图,即上面表格中的每个单元格都包含所有绘图。以下是一个包含合成数据的解决方案:

# Make up data
len=29
data <- data.frame(
  x1=rnorm(len, 0, .05),
  x3=rnorm(len, 0, .05),
  x8=rnorm(len, 0, .05),
  x11=rnorm(len, 0, .05)
)    
rownames(data) <- as.character(as.Date("2013-12-01") - (len:1))

# Get worst drawdowns    
sapply(
  names(data),    # for each entry in df
  function(x) {   
    sapply(       # cycle through each item in a drawDown object
      sortDrawdowns(findDrawdowns(data[, x, drop=F])),  # get drawdows sorted
      `[[`, 1                                           # extract 1st item
    )
  } 
)
#                      x1         x3         x8        x11
# return       -0.1887651 -0.3425831 -0.1592202 -0.2928802
# from         17.0000000  5.0000000 16.0000000  1.0000000
# trough       20.0000000 24.0000000 27.0000000 16.0000000
# to           25.0000000 30.0000000 30.0000000 30.0000000
# length        9.0000000 26.0000000 15.0000000 30.0000000
# peaktotrough  4.0000000 20.0000000 12.0000000 16.0000000
# recovery      5.0000000  6.0000000  3.0000000 14.0000000
尝试在sapply…、simplify=TRUE中设置simplify=TRUE,或者直接使用lappy获取列表,或者您可能希望查看plyr包以获得合适的格式。也要努力通过提问来改进你的问题