我有一个由返回时间序列组成的数据框,其中包含以下列
date x1 x3 x8 x11
x.R
是我的数据框,包含回复
我想在Performance Analytics工具中使用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
答案 0 :(得分:0)
您需要一个嵌套的sapply
,因为sortDrawdowns
会返回所有无法在2维中显示的下拉(即上面表格中的每个单元格都包含所有下拉列表。这是一个解决方案用补充数据:
# 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