Funkcje zmiany nazwy dplyr wymagają podania nowej nazwy kolumny jako niecytowane nazwy zmiennych. Mam jednak funkcję, w której nazwa kolumny jest skonstruowana przez wklejenie ciągu znaków na przekazywany argument, a więc jest ciągiem znaków.Wprowadź nowe nazwy kolumn jako ciąg w funkcji zmiany nazwy dplyr
Na przykład powiedzieć, że miał tę funkcję
myFunc <- function(df, col){
new <- paste0(col, '_1')
out <- dplyr::rename(df, new = old)
return(out)
}
Jeśli uruchomić ten
df <- data.frame(a = 1:3, old = 4:6)
myFunc(df, 'x')
uzyskać
a new
1 1 4
2 2 5
3 3 6
Podczas gdy chcę 'nowych' kolumna będzie nazwa ciągu, który skonstruowałem ("x_1"), tj.
a x_1
1 1 4
2 2 5
3 3 6
Czy tak jest w ogóle?
Z [komunikatu 'dplyr 0.3'] (http://blog.rstudio.org/2014/10/13/dplyr-0-3-2/):" Możesz teraz programować z 'dplyr' - każda funkcja korzystająca z niestandardowej oceny (NSE) ma również standardową wersję podwójną (SE), która kończy się na '_' [...] Wersja SE każdej funkcji ma podobne argumenty, ale muszą być jawnie" cytowane ". " Dlatego sprawdź, czy 'rename_' może być tu użyteczny. – Henrik
Dzięki, warto wiedzieć, ale tak naprawdę nic nie zmienia w tym przypadku. Byłoby działało, gdyby kolumna, przez którą przechodziłem, była starą nazwą kolumny, ale zmiana powyższej funkcji na użycie rename_ (i wpisanie starych w cudzysłowy) nadal zwraca ten sam – user1165199
@ user1165199 Zrobiłbym 'colnames (df) [colnames (df)% w% "old"] <- paste0 ("x", "_") '(w funkcji, jeśli jest to konieczne), ponieważ jest w stanie łatwo zamienić wektor nazw. – akrun