r - 如何更有效地大写列名?
问题描述
我想在 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]
)
推荐阅读
- has-many - 关系计数的环回过滤器
- ios - 如何在 iOS 中触发 textField(_:shouldChangeCharactersIn:replacementString:) 方法
- amazon-web-services - 为什么我的 MERN 堆栈 Web 应用在部署后不加载其主页?
- latex - Latex 将文本文件中的数字转换为饼图的变量
- svg - 如何将 SVG 文件转换为 JPEG?
- ios - 是否可以在 iOS 应用程序中运行 UITest?
- reactjs - 使用 apache 在 EC2 服务器上创建和部署 React 应用程序
- python - django:被引用表“tcReports_global_users”中没有与外键“fk”中的引用列列表匹配的主键或候选键
- swift - 如何从 `Button` 的动作或 `Binding` 引用 `actor` 的属性?
- java - 如何在 Java SE 11 中使用自定义注解?