2015-05-01 40 views
1

「我的」capitalize是否正常工作?下面是他們的結果註釋inside-r.org測試用例:R:正在大寫工作正常

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又錯了。即如果在我的情況下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" 
+1

確切位置在哪裏,你得到這個'capitalize'功能的呢?你寫了嗎?如果是這樣,請顯示代碼。否則,我不確定你到底在問什麼。 – MrFlick

+0

@MFFlick啊!感謝您的評論。它來自'Hmisc' ..編輯 –

+1

你到底想要達到什麼目的?只是大寫字母中的第一個字母? –

回答

1

我不確定你在追求什麼,但這是我對自己想要追求的東西的一種破解。描述你的目標或提供期望的輸出可能會更好。這裏是大寫只有第一個單詞的第一個字母,以及大寫每個單詞的第一個字母一個正則表達式的方法:

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" 
+0

謝謝!我喜歡這種方法,因爲它不需要額外的軟件包。我確實只是在字符串中輸入第一個字母,但大寫每個單詞對我來說都是有用的。公認。 –

2

解決您必須使用小寫字符串capitalize工作。除了capitalize之外,一個簡單的解決方法是使用tolower

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

使用'R.utils'包代替'Hmisc'解決了問題:''大寫(c(「Hello world」,「hello world」,「hello world」,「test cAse」)) [1 ]「Hello world」「Hello world」「Hello World」「Test cAse」' –

+0

@AlexeyFerapontov你的方法給了我:'「Hello world」「Hello world」「hello world」「test cAse」'第四個要素不同)。 –

+0

你用'R.utils'試過了嗎? –