从 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 一个列表)吗?