我正在尝试编写一个函数,使我可以将数据框中某些字段的大小写更改为小写。我正在尝试通过使用功能,for和tolower命令来执行此操作,但是我没有任何运气。我对R还是很陌生,所以我可能缺少明显的东西。任何人都能提供的帮助,我将不胜感激。
standardize_lowercase <- function(df, objs) {
for(i in 1:length(objs)) {
df[i] <- tolower(df[i])
}
}
我正在使用df引用我的主数据帧,而objs将是一个字符向量,其中包含我想转换为小写字母的数据帧中字段的名称。
答案 0 :(得分:0)
我们可以如下使用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
或者这是使用lapply
的基本R解决方案。
dat[obj] <- lapply(dat[obj], tolower)
dat
# # 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