R 中的 Rename() 函数不适用于循环内的 Dplyr 管道
Rename() function in R not working with Dplyr pipe inside for loop
我使用TidyquantAPI检索了一堆数据,如下:
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
列。在这种情况下,我想将“价格”重命名为“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
注意该列是如何重命名为“资产”的。我本来希望该列重命名为“DGS5”。
我哪里做错了?
谢谢!
请注意,您在函数参数中有一个 data-variable(即一个包含承诺的 env-variable,您需要用双大括号将其括起来以包含该参数。这称为 [INDIRECTION ],这是一个 glue
语法。
如果你想在输出中使用变量名,你可以结合:=
使用胶水语法
因此你得到
rename({{asset}} = price)
查看here了解更多信息
我使用TidyquantAPI检索了一堆数据,如下:
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
列。在这种情况下,我想将“价格”重命名为“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
注意该列是如何重命名为“资产”的。我本来希望该列重命名为“DGS5”。
我哪里做错了?
谢谢!
请注意,您在函数参数中有一个 data-variable(即一个包含承诺的 env-variable,您需要用双大括号将其括起来以包含该参数。这称为 [INDIRECTION ],这是一个 glue
语法。
如果你想在输出中使用变量名,你可以结合:=
因此你得到
rename({{asset}} = price)
查看here了解更多信息