R:资本运作正常吗

R:资本运作正常吗,r,capitalize,R,Capitalize,“我的”大写是否正常工作?下面是一个来自inside-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(p

“我的”
大写
是否正常工作?下面是一个来自inside-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"
另一个测试用例:

> capitalize(c("Hello world", "hello world", "hello World"))
[1] "Hello world" "Hello world" "hello World"
案例3又错了。也就是说,如果在我的例子中,
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"  

必须使用小写字符串使
大写
才能工作。除了
大写
之外,一个简单的解决方法是使用
tolower

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"

x这个
capitalize
函数的确切来源是哪里?是你写的吗?如果是,请显示代码。否则我不知道你到底在问什么。@flick先生啊!谢谢你的评论。它来自Hmisc的
。。编辑你到底想达到什么目的?只是字符串中第一个字母的大写?是的。只有第一个字母使用
R.utils
包而不是
Hmisc
:>
大写字母(c(“Hello world”、“Hello world”、“Hello world”、“Hello world”、“test cAse”)[1]“Hello world”“Hello world”“Hello world”“test cAse”
@AlexeyFerapontov you’s方法给了我:
“Hello world”“Hello world”“Hello world”“test”“test cAse”
(请参见第三和第四个元素的不同之处)。您是否尝试了
R.utils
?谢谢!我喜欢这种方法,因为它不需要额外的软件包。我确实只想写字符串中的第一个字母,但大写每个单词对我来说也很有用。认可的。
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"