R 如何在数据帧中的多个列上运行函数?

R 如何在数据帧中的多个列上运行函数?,r,R,我有一个约96000人的数据库,我正试图将其与另一个类似的数据库进行匹配。有些缺少ID号,所以我需要匹配列,但是数据有点混乱,包含尾随空格和奇怪的大写字母 我正在使用BBmisc包中的trimws()和capatalitestrings()。但只知道如何在单独的命名列上运行这些 MDB$City<- capitalizeStrings(MDB$City,lower.back = T,all.words = T) MDB$City<-trimws(MDB$City,which="bo

我有一个约96000人的数据库,我正试图将其与另一个类似的数据库进行匹配。有些缺少ID号,所以我需要匹配列,但是数据有点混乱,包含尾随空格和奇怪的大写字母

我正在使用BBmisc包中的
trimws()
capatalitestrings()
。但只知道如何在单独的命名列上运行这些

MDB$City<- capitalizeStrings(MDB$City,lower.back = T,all.words = T)

MDB$City<-trimws(MDB$City,which="both")

MDB$City我们可以使用
lappy
在多个列上循环,然后将输出分配回数据集的子集

MDB[nm1] <- lapply(MDB[nm1], function(x)
     trimws(capitalizeStrings(x, lower.back = TRUE, all.words = TRUE), "both")) 

MDB[nm1]我们可以使用
lappy
在多个列上循环,然后将输出分配回数据集的子集

MDB[nm1] <- lapply(MDB[nm1], function(x)
     trimws(capitalizeStrings(x, lower.back = TRUE, all.words = TRUE), "both")) 

MDB[nm1]另一个选项是
dplyr::mutate_if
。例如:

library(dplyr)

MDB %>%
  mutate_if(is.character, trimws(which = "both"))

另一个选项是
dplyr::mutate\u if
。例如:

library(dplyr)

MDB %>%
  mutate_if(is.character, trimws(which = "both"))

您可以使用
lappy
MDB[nm1]这很完美,谢谢您可以使用
lappy
MDB[nm1]这很完美,谢谢