2017-08-02 54 views
3

我創建了一個簡單的數據幀(dput下同)重命名爲一個變量名稱的列:如何「在tidyverse方式」

date  ticker  value 
------------------------------ 
    2016-06-30 A2M.ASX 0.0686 
    2016-07-29 A2M.ASX -0.0134 
    2016-08-31 A2M.ASX -0.0650 
    2016-09-30 A2M.ASX 0.0145 
    2016-10-31 A2M.ASX 0.3600 
    2016-11-30 A2M.ASX -0.1429 

我想將value列的名稱改爲無論是在我的metric變量名中,我想以dplyr的方式來完成。

我的樣本數據:

df = structure(list(date = c("2016-06-30", "2016-07-29", "2016-08-31", "2016-09-30", "2016-10-31", "2016-11-30"), ticker = c("A2M.ASX", "A2M.ASX", "A2M.ASX", "A2M.ASX", "A2M.ASX", "A2M.ASX"), value = c(0.0686, -0.0134, -0.065, 0.0145, 0.36, -0.1429)), .Names = c("date", "ticker", "value"), row.names = c(NA, 6L), class = "data.frame") 
metric = "next_return" 

我知道該怎麼做,在一個行:

colnames(df)[3] = metric 

但我想這樣做在一個tidyverse的方式,所以我可以在管道中使用它。我一直在擺弄replace_但我只是設法得到錯誤:

> dplyr::rename_(df, "ticker" = metric) 
Error: `next_ret_1M` contains unknown variables 

回答

7

隨着最新dplyr(> 0.7.0),需要使用

rename(df, !!metric:=value) 

的語法是 「NEW_NAME = OLD_NAME」並且您需要使用:=!!將變量放在參數名稱的左側。