R 编写函数将某些列更改为小写
我正在尝试编写一个函数,它允许我将数据帧中某些字段的大小写改为小写。我试图通过使用函数、for和tolower命令来实现这一点,但我没有任何运气。我对R还是相当陌生,所以我可能遗漏了一些明显的东西。我将感谢任何人能提供的任何帮助R 编写函数将某些列更改为小写,r,dataframe,R,Dataframe,我正在尝试编写一个函数,它允许我将数据帧中某些字段的大小写改为小写。我试图通过使用函数、for和tolower命令来实现这一点,但我没有任何运气。我对R还是相当陌生,所以我可能遗漏了一些明显的东西。我将感谢任何人能提供的任何帮助 standardize_lowercase <- function(df, objs) { for(i in 1:length(objs)) { df[i] <- tolower(df[i]) } } standarize_lowercas
standardize_lowercase <- function(df, objs) {
for(i in 1:length(objs)) {
df[i] <- tolower(df[i])
}
}
standarize_lowercase我们可以使用dplyr
包,如下所示。以字符串形式提供列名,并将tolower
提供给mutate_at
函数
library(dplyr)
# Create example data frame
dat <- data_frame(A = c("A", "B", "C"),
B = c("A", "B", "C"),
C = c("A", "B", "C"),
D = c("A", "B", "C"),
E = c("A", "B", "C"))
# Assuming that we want to change the column B, C, E to lower case
obj <- c("B", "C", "E")
dat2 <- dat %>%
mutate_at(vars(obj), funs(tolower(.)))
dat2
# # A tibble: 3 x 5
# A B C D E
# <chr> <chr> <chr> <chr> <chr>
# 1 A a a A a
# 2 B b b B b
# 3 C c c C c
下面是将第二个选项转换为函数的示例
dat_tolower <- function(data, target){
data[target] <- lapply(data[target], tolower)
return(data)
}
dat_tolower(dat, target = obj)
# # A tibble: 3 x 5
# A B C D E
# <chr> <chr> <chr> <chr> <chr>
# 1 A a a A a
# 2 B b b B b
# 3 C c c C c
dat\u降低函数内data.frame的任何更改值,函数外将看不到该值。(R的行为更像是通过值传递,而不是通过引用传递)。您需要返回更新后的data.frame并重新分配给同一变量或新变量。请参阅(但忽略“分配”选项-这是糟糕的R样式)。
dat_tolower <- function(data, target){
data[target] <- lapply(data[target], tolower)
return(data)
}
dat_tolower(dat, target = obj)
# # A tibble: 3 x 5
# A B C D E
# <chr> <chr> <chr> <chr> <chr>
# 1 A a a A a
# 2 B b b B b
# 3 C c c C c