从 returns 多个值的函数中提取单个值以用于 dplyr() 管道
Extract single value from function that returns multiple values for use with dplyr() pipe
我有以下数据:
date_range <- c('2020-01-31',
'2020-02-28',
'2020-03-31',
'2020-04-30',
'2020-05-31',
'2020-06-30',
'2020-07-31',
'2020-08-31',
'2020-09-30',
'2020-10-31',
'2020-11-30',
'2020-12-31',
'2021-01-31',
'2021-02-28',
'2021-03-31',
'2021-04-30',
'2021-05-31',
'2021-06-30',
'2021-07-31',
'2021-08-31',
'2021-09-30',
'2021-10-31',
'2021-11-30',
'2021-12-31'
)
date_range <- as.Date(date_range)
returns <- c(0.134,
0.007,
-0.036,
0.112,
0.001,
-0.033,
0.344,
0.020,
-0.046,
0.123,
0.309,
0.223,
0.100,
0.239,
-0.009,
0.055,
0.029,
-0.104,
0.074,
0.172,
-0.098,
0.180,
-0.022,
-0.072
)
现在,我使用以下方法获得最大回撤:
library(ts)
maxdrawdown(returns)
这给出:
[1] 0.448
$from
[1] 7
$to
[1] 18
我提取 first 值 return 设置为:
maxdrawdown(returns)[1]
这给出:
> maxdrawdown(returns)[1]
$maxdrawdown
[1] 0.448
使用 dplyr,我想按年份汇总。所以,我执行以下操作:
df %>%
group_by(year(dates)) %>%
summarize(max_dd = maxdrawdown(returns)[1]
)
但是,这个 return 没有值:
# A tibble: 2 x 2
`year(dates)` max_dd
<dbl> <named list>
1 2020 <dbl [1]>
2 2021 <dbl [1]>
我的语法有问题吗?
谢谢!
你能试试 [[1]]
(return 一个数字)而不是 [1]
(return 一个列表)吗?
我有以下数据:
date_range <- c('2020-01-31',
'2020-02-28',
'2020-03-31',
'2020-04-30',
'2020-05-31',
'2020-06-30',
'2020-07-31',
'2020-08-31',
'2020-09-30',
'2020-10-31',
'2020-11-30',
'2020-12-31',
'2021-01-31',
'2021-02-28',
'2021-03-31',
'2021-04-30',
'2021-05-31',
'2021-06-30',
'2021-07-31',
'2021-08-31',
'2021-09-30',
'2021-10-31',
'2021-11-30',
'2021-12-31'
)
date_range <- as.Date(date_range)
returns <- c(0.134,
0.007,
-0.036,
0.112,
0.001,
-0.033,
0.344,
0.020,
-0.046,
0.123,
0.309,
0.223,
0.100,
0.239,
-0.009,
0.055,
0.029,
-0.104,
0.074,
0.172,
-0.098,
0.180,
-0.022,
-0.072
)
现在,我使用以下方法获得最大回撤:
library(ts)
maxdrawdown(returns)
这给出:
[1] 0.448
$from
[1] 7
$to
[1] 18
我提取 first 值 return 设置为:
maxdrawdown(returns)[1]
这给出:
> maxdrawdown(returns)[1]
$maxdrawdown
[1] 0.448
使用 dplyr,我想按年份汇总。所以,我执行以下操作:
df %>%
group_by(year(dates)) %>%
summarize(max_dd = maxdrawdown(returns)[1]
)
但是,这个 return 没有值:
# A tibble: 2 x 2
`year(dates)` max_dd
<dbl> <named list>
1 2020 <dbl [1]>
2 2021 <dbl [1]>
我的语法有问题吗?
谢谢!
你能试试 [[1]]
(return 一个数字)而不是 [1]
(return 一个列表)吗?