我使用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)
点击这里查看更多信息