Rename()函数在R中不能使用for循环中的Dplyr管道



我使用Tidyquant API检索一堆数据,如下所示:

library(tidyquant)
symbols_list <- c('DGS2', 'DGS5', 'DGS10', 'DGS30')
start_date <- as.Date('2022-01-01')
end_date <- as.Date('2022-03-31')
for (asset in symbols_list){

# retrieves the data
assign(paste('sym', asset, sep = '_'), tq_get(asset,
from = start_date,
to = end_date,
get = 'economic.data') %>%
)
}

数据如下:

sym_DGS5
# A tibble: 64 x 3
symbol date       price
<chr>  <date>     <dbl>
1 DGS5   2022-01-03  1.37
2 DGS5   2022-01-04  1.37
3 DGS5   2022-01-05  1.43
4 DGS5   2022-01-06  1.47
5 DGS5   2022-01-07  1.5 
6 DGS5   2022-01-10  1.53
7 DGS5   2022-01-11  1.51
8 DGS5   2022-01-12  1.5 
9 DGS5   2022-01-13  1.47
10 DGS5   2022-01-14  1.55
# ... with 54 more rows

我想用符号的名称重命名通用的price列。在本例中,我想重命名"price"作为"DGS5"为此,我使用rename()函数和dpyr管道,如下所示:

start_date <- as.Date('2022-01-01')
end_date <- as.Date('2022-03-31')
symbol_list <- c('T10Y2Y', 'DGS2', 'DGS5', 'DGS10', 'DGS30')
symbol_list 
for (asset in symbol_list){

# retrieves the data
assign(paste('sym', asset, sep = '_'), tq_get(asset,
from = start_date,
to = end_date,
get = 'economic.data'
) %>% rename(asset = price)
)
}

但是,这样做会产生:

sym_DGS5
# A tibble: 64 x 3
symbol date       asset
<chr>  <date>     <dbl>
1 DGS5   2022-01-03  1.37
2 DGS5   2022-01-04  1.37
3 DGS5   2022-01-05  1.43
4 DGS5   2022-01-06  1.47
5 DGS5   2022-01-07  1.5 
6 DGS5   2022-01-10  1.53
7 DGS5   2022-01-11  1.51
8 DGS5   2022-01-12  1.5 
9 DGS5   2022-01-13  1.47
10 DGS5   2022-01-14  1.55
# ... with 54 more rows

注意该列是如何重命名为"asset"的。我本来希望这个专栏被重命名为"dg5"。

我在这里做错了什么?

谢谢!

注意,你在函数参数中有一个数据变量(即一个包含承诺的环境变量),你需要用双括号括住该参数。这被称为[INDIRECTION],这是glue语法。

如果您想在输出中使用变量名,可以将glue语法与:=

结合使用。因此得到

rename({{asset}} = price)

点击这里查看更多信息

相关内容

  • 没有找到相关文章

最新更新