R:大写工作正常

R: is capitalize working properly

"my"capitalize工作正常吗?这是来自内部的测试用例-r.org,其结果在评论中:

library(Hmisc)
words <- strsplit("Hello wOrld", " ")[[1]];
cat(paste(toupper(words), collapse=" "), "\n")      # "HELLO WORLD"
cat(paste(tolower(words), collapse=" "), "\n")      # "hello world"
cat(paste(capitalize(words), collapse=" "), "\n")   # "Hello WOrld"

这是我得到的:

HELLO WORLD 
hello world 
Hello wOrld  #WRONG!!!

另一个测试用例:

> capitalize(c("Hello world", "hello world", "hello World"))
[1] "Hello world" "Hello world" "hello World"

案例3又错了。 IE。如果在我的例子中 capitalize 在字符串中的任何地方看到一个大写字母,它就不能正常工作。有什么想法吗?

更新。 R.utils

解决了问题
library(R.utils)
capitalize(c("Hello world", "hello world", "hello World", "test cAse"))
[1] "Hello world" "Hello world" "Hello World" "Test cAse"  

您必须使用小写字符串才能使 capitalize 正常工作。一个简单的解决方法是使用 tolower 除了 capitalize

capitalize(tolower(c("Hello world", "hello world", "hello World")))
## [1] "Hello world" "Hello world" "Hello world"

我不确定你在追求什么,但这是我对我认为你在追求的东西的破解。最好描述您的目标或提供所需的输出。这是一个正则表达式方法,只将第一个单词的首字母大写,并将每个单词的首字母大写:

x <- c("Hello world", "hello world", "hello World", "test cAse")

sub("(\w)(\w*)", "\U\1\E\2", x, perl=TRUE) 
## [1] "Hello world" "Hello world" "Hello World" "Test cAse"

gsub("(\w)(\w*)", "\U\1\E\2", x, perl=TRUE) 
## [1] "Hello World" "Hello World" "Hello World" "Test CAse"