2016-03-10 3 views
0

Я знаю, что могу сделать names(df), чтобы получить столбцы данных. Но есть ли более удобный способ переименования, используя dplyr в Rstudio?Как я могу автозаполнять имена столбцов в dplyr?

Ранее:

names(df)=c("anew","bnew","cnew") 

Сейчас ?:

library(dplyr) 
rename(df, aold = anew, bold = bnew, cold= cnew) 

dplyr делает его более трудным, как я должен знать/тип как старые и новые имена столбцов.

Я вижу некоторые разговоры вокруг автозаполнения имен столбцов в toolchain dplyr. Но я не могу заставить его работать, и у меня есть последняя RStudio.

https://plus.google.com/+SharonMachlis/posts/FHknZcbAdLE

+1

В чем вопрос? Вам не нужно было знать старые имена для их переименования? –

+0

В первом случае, например, мне не нужно вводить имена старых столбцов. Во втором, мне нужно написать его ... – maximusdooku

+1

Вы также можете сделать, например. 'rename_ (iris, .dots = setNames (имена (iris), буквы [1: 5]))' и не нужно вводить старые имена. –

ответ

0

Нет ничего плохого в использовании names(*) <- new_value. dplyr не Ве-и конец все манипуляции с данными в R.

Это сказало, если вы хотите, чтобы включить это в dplyr трубопровода, вот как это сделать:

df %>% `names<-`(c("a_new", "b_new", "c_new")) 

Этот работает, потому что (почти) все в R является функцией, и, в частности, назначение новых имен действительно является вызовом функции names<-.

2

Вы можете попробовать что-то вроде этого (вам не нужно использовать dplyr для автоматического преобразования имен). Просто замените функцию modify_names любым преобразованием, которое вы хотите применить к именам.

> modify_names <- function(any_string) { 
+ return(paste0(any_string, "-new")) 
+ } 
> 


> df <- data.frame(c(0, 1, 2), c(3, 4, 5)) 
> names(df) <- c("a", "b") 
> df 
    a b 
1 0 3 
2 1 4 
3 2 5 


> names(df) <- modify_names(names(df)) 
> df 
    a-new b-new 
1  0  3 
2  1  4 
3  2  5 
Смежные вопросы