2017-03-02 5 views
0

列名が別の特定のベクトルに存在しない限り、データフレーム内のすべての列名の最後に何かを追加します。例えば他のベクトルに存在しない場合は列名を更新してください

は私が

df <- data.frame('my' = c(1,2,3), 
       'data' = c(4,5,6), 
       'is' = c(7,8,9), 
       'here' = c(10,11,12)) 
dont_update <- c('my', 'is') 
to_add <- '_new' 

を持っていると私は

my data_new is here_new 
1 1  4 7  10 
2 2  5 8  11 
3 3  6 9  12 

答えて

2

少し冗長で終わるしたいのですが、これは

to_update <- names(df)[!names(df) %in% dont_update] 
names(df)[match(to_update, names(df))] <- paste0(to_update, to_add) 

または多分これは

明確であるが働くと言います
names(df) <- ifelse(names(df) %in% dont_update, names(df), paste0(names(df), to_add)) 
関連する問題