簡體   English   中英

Dplyr或Magrittr - tolower?

[英]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現在允許這樣:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM