R
RStudio
dplyr

【R】[dplyr] rename()の中でpaste()を使う

dplyr::rename(new = old)の中で文字列結合関数(paste())を使うとき

name.jpeg

もんだい

old_1年目, old_2年目, old_3年目, old_4年目 ...
みたいな変数があるデータフレームを、年ごとに集計したい.というような時、

rename.R
library(dplyr)

for(i in year){

 df_new <- df %>% select( paste("old_",i,"年目", sep=""),...) %>%
           rename( new = paste("old_",i,"年目", sep = ""), ...)

}

年ごとに変数を取得して名前も変えたかったのですが、思い通りに動いてくれませんでした

ERROR
Error: Expressions are currently not supported in 'rename()'

dplyr::rename()では、"名前を変える対象の変数に関数を使う"にはサポートしていないみたいです.

かいけつさく

一文字追加すると解決しました, 全く同じ質問がありました

Enter new column names as string in dplyr's rename function

rename.R
library(dplyr)

for(i in year){

 df_new <- df %>% select( paste("old_",i,"年目", sep=""),...) %>%
           rename_( new = paste("old_",i,"年目", sep = ""), ...)

}

rename_()を使えば、変更前の変数名に関数を使ってもアクセスできるようです.

まとめ

rename()の中で、paste()をつかうときは、rename()_で書く