如何更有效地将列名大写?

How do I capitalise column names more efficiently?

我想将 data.frame 的列名称中的某些单词(“for”、“in”、“and”、“of”)大写。我目前的做法既费力又低效。任何改进它的帮助。

示例数据集(我的要长得多)

a <- runif(10, 0,100)
b <- runif(10, 0,100)
c <- runif(10, 0,100)
d <- runif(10, 0,100)

df <- cbind(a,b,c,d)
colnames(df) <- c("NamesofPeople", "HereandThere", "AllforOne", "LetMein")

当前方法

colnames(df) <- str_replace_all(colnames(filename), "NamesofPeople", "NamesOfPeople")
colnames(df) <- str_replace_all(colnames(filename), "HereandThere", "HereAndThere")
colnames(df) <- str_replace_all(colnames(filename), "AllforOne", "AllForOne")
colnames(df) <- str_replace_all(colnames(filename), "LetMein", "LetMeIn")

注意

如果这些字母作为单词的一部分包含在其他列中,我需要小心,例如“of”也将出现在“software”中,将其大写将导致“sOftware”。

您可以尝试使用正则表达式:

colnames(df) <- str_replace_all(colnames(df), 
              pattern = c("of([A-Z]|$)" = "Of\1", 
                          "and([A-Z]|$)" = "And\1", 
                          "for([A-Z]|$)" = "For\1",
                           "in([A-Z]|$)" = "In\1")
                  )

在这里,我检查是否有任何关键字(of、and、for、in)位于字符串的末尾($)或后跟大写字母([A-Z]