R仅在字符串中大写罗马数字

R capitalize roman numerals only in string

如果我有一个包含以下内容的向量:

people <- c("PERSON I", "PERSON II", "PERSON III", "PERSON IV")

为了将它们变成标题大小写,我使用了以下内容:

people <- str_to_title(people)

现在我有以下

> people
[1] "Person I"   "Person Ii"  "Person Iii" "Person Iv"  

这样罗马数字只大写怎么办?

"Person I"   "Person II"   "Person III"   "Person IV" 

或者有没有办法在不使用 str_to_title 的情况下将 all-caps 转换为最后一个向量?

这是使用 substrsubpaste 的基础 R 选项:

people <- c("PERSON I", "PERSON II", "PERSON III", "PERSON IV")
people <- paste0(substr(people, 1, 1), tolower(sub("^\S(\S+).*$", "\1", people)),
                 " ", sub("^.*?(\S+)$", "\1", people))
people

[1] "Person I"   "Person II"  "Person III" "Person IV"

如果格式始终相同,即两个单词之间用 space 分隔,则可以使用以下格式:

sapply(strsplit(people,' '), function(X){paste(str_to_title(X[1]), X[2]) })