いくつかの列をフィルタリング、削除、追加するデータフレームがあり、すべての列の名前をパイプ(%>%
)を使用して変更したいと思います。
しかし、現在のcolnamesベクトル(内%>%
)を取得して別のベクトルに置き換える方法がわかりませんか?列を削除しない場合は非常に簡単に思えますが、colnames
パイプのチェーン内のベクトルを「更新」するにはどうすればよいですか?
library(dplyr)
library(tidyr)
data("mtcars")
mtcars %>%
filter(disp < 200) %>%
dplyr::select(-c('mpg','cyl', "disp")) %>%
mutate(Type = 2) %>%
# rename_at(vars(names(df), # how to rename the columns???
# function(x) paste(names(df), "new", sep = "_"))) %>%
head(2)
私が得るもの:
hp drat wt qsec vs am gear carb Type
1 110 3.9 2.620 16.46 0 1 4 4 2
2 110 3.9 2.875 17.02 0 1 4 4 2
私が期待すること(変更されたcolnames)
hp_new drat_new wt_new qsec_new vs_new am_new gear_new carb_new Type_new
1 110 3.9 2.620 16.46 0 1 4 4 2
2 110 3.9 2.875 17.02 0 1 4 4 2
使用できます rename_all
library(dplyr)
mtcars %>%
filter(disp < 200) %>%
dplyr::select(-c('mpg','cyl', "disp")) %>%
mutate(Type = 2) %>%
rename_all(~paste0(., "_new")) %>% head
# hp_new drat_new wt_new qsec_new vs_new am_new gear_new carb_new Type_new
#1 110 3.90 2.620 16.46 0 1 4 4 2
#2 110 3.90 2.875 17.02 0 1 4 4 2
#3 93 3.85 2.320 18.61 1 1 4 1 2
#4 62 3.69 3.190 20.00 1 0 4 2 2
#5 95 3.92 3.150 22.90 1 0 4 2 2
#6 123 3.92 3.440 18.30 1 0 4 4 2
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加