[英]Dplyr or Magrittr - tolower?
是否可以在dplyr或magrittr鏈中將所有列名設置為高位或低位?
在下面的示例中,我加載數據,然后使用magrittr管道將其鏈接到我的dplyr突變。 在第4行中我使用了tolower
函數,但這是出於不同的目的:使用小寫觀察創建一個新變量。
mydata <- read.csv('myfile.csv') %>%
mutate(Year = mdy_hms(DATE),
Reference = (REFNUM),
Event = tolower(EVENT)
我顯然正在尋找像colnames = tolower
這樣的東西,但知道這不起作用/存在。
我注意到了dplyr rename
功能,但這並沒有多大幫助。
在magrittr中,colname選項是:
set_colnames
而不是base R的colnames<-
set_names
而不是base R的names<-
我嘗試了很多這些但沒有骰子的排列。
顯然,這在基礎r中非常簡單。
names(mydata) <- tolower(names(mydata))
然而,在進入優雅的dplyr / magrittr代碼鏈之前,與dplyr / magrittr哲學似乎不一樣 ,你必須做一個笨重的單行班。
dplyr
現在允許這樣:
mydata %>% rename_all(tolower)
iris %>% setNames(tolower(names(.))) %>% head
或者等效地使用非替換形式的替換功能:
iris %>% `names<-`(tolower(names(.))) %>% head
iris %>% `colnames<-`(tolower(names(.))) %>% head # if you really want to use `colnames<-`
如果我理解你的問題,使用magrittr
的“復合賦值管道運算符” %<>%
可能是一個更簡潔的選項。
library("magrittr")
names(iris) %<>% tolower
?`%<>%` # for more
mtcars %>%
set_colnames(value = casefold(colnames(.), upper = FALSE)) %>%
head
casefold
在base R中可用,並且可以在兩個方向上進行轉換,即可以根據需要使用flag upper
轉換為全大寫或全小寫。
此外, colnames()
將僅使用列標題進行大小寫轉換。
您還可以定義一個函數:
upcase <- function(df) {
names(df) <- toupper(names(df))
df
}
library(dplyr)
mtcars %>% upcase %>% select(MPG)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.