Dplyr 或 Magrittr - tolower?
Dplyr or Magrittr - tolower?
是否可以在 dplyr 或 magrittr 链中将所有列名设置为 upper 或 lower?
在下面的示例中,我加载了数据,然后使用 magrittr 管道将其链接到我的 dplyr 突变。在第 4 行中,我使用了 tolower
函数,但这是为了不同的目的:创建一个具有小写观察值的新变量。
mydata <- read.csv('myfile.csv') %>%
mutate(Year = mdy_hms(DATE),
Reference = (REFNUM),
Event = tolower(EVENT)
我显然在寻找类似 colnames = tolower
的东西,但我知道这不是 work/exist。
我注意到 dplyr rename
函数,但这并不是很有用。
在 magrittr 中,colname 选项是:
set_colnames
而不是基数 R 的 colnames<-
set_names
而不是基数 R 的 names<-
我已经用这些尝试了很多排列,但没有骰子。
显然这在 base r 中非常简单。
names(mydata) <- tolower(names(mydata))
然而,在转向优雅的 dplyr/magrittr 代码链之前,您必须将其作为笨重的单行代码来执行,这似乎与 dplyr/magrittr 的哲学不一致。
iris %>% setNames(tolower(names(.))) %>% head
或者等效地使用非替换形式的替换函数:
iris %>% `names<-`(tolower(names(.))) %>% head
iris %>% `colnames<-`(tolower(names(.))) %>% head # if you really want to use `colnames<-`
如果我正确理解你的问题,使用 magrittr
的 "compound assignment pipe-operator" %<>%
可能是一个更简洁的选择。
library("magrittr")
names(iris) %<>% tolower
?`%<>%` # for more
mtcars %>%
set_colnames(value = casefold(colnames(.), upper = FALSE)) %>%
head
casefold
在 base R 中可用并且可以双向转换,即可以根据需要使用标志 upper
转换为全部大写或全部小写。
另外 colnames()
将仅使用列 headers 进行大小写转换。
您还可以定义一个函数:
upcase <- function(df) {
names(df) <- toupper(names(df))
df
}
library(dplyr)
mtcars %>% upcase %>% select(MPG)
dplyr
现在允许:
mydata %>% rename_all(tolower)
是否可以在 dplyr 或 magrittr 链中将所有列名设置为 upper 或 lower?
在下面的示例中,我加载了数据,然后使用 magrittr 管道将其链接到我的 dplyr 突变。在第 4 行中,我使用了 tolower
函数,但这是为了不同的目的:创建一个具有小写观察值的新变量。
mydata <- read.csv('myfile.csv') %>%
mutate(Year = mdy_hms(DATE),
Reference = (REFNUM),
Event = tolower(EVENT)
我显然在寻找类似 colnames = tolower
的东西,但我知道这不是 work/exist。
我注意到 dplyr rename
函数,但这并不是很有用。
在 magrittr 中,colname 选项是:
set_colnames
而不是基数 R 的 colnames<-
set_names
而不是基数 R 的 names<-
我已经用这些尝试了很多排列,但没有骰子。
显然这在 base r 中非常简单。
names(mydata) <- tolower(names(mydata))
然而,在转向优雅的 dplyr/magrittr 代码链之前,您必须将其作为笨重的单行代码来执行,这似乎与 dplyr/magrittr 的哲学不一致。
iris %>% setNames(tolower(names(.))) %>% head
或者等效地使用非替换形式的替换函数:
iris %>% `names<-`(tolower(names(.))) %>% head
iris %>% `colnames<-`(tolower(names(.))) %>% head # if you really want to use `colnames<-`
如果我正确理解你的问题,使用 magrittr
的 "compound assignment pipe-operator" %<>%
可能是一个更简洁的选择。
library("magrittr")
names(iris) %<>% tolower
?`%<>%` # for more
mtcars %>%
set_colnames(value = casefold(colnames(.), upper = FALSE)) %>%
head
casefold
在 base R 中可用并且可以双向转换,即可以根据需要使用标志 upper
转换为全部大写或全部小写。
另外 colnames()
将仅使用列 headers 进行大小写转换。
您还可以定义一个函数:
upcase <- function(df) {
names(df) <- toupper(names(df))
df
}
library(dplyr)
mtcars %>% upcase %>% select(MPG)
dplyr
现在允许:
mydata %>% rename_all(tolower)