2017-03-02 37 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)) 
相關問題