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 转换为最后一个向量?
这是使用 substr
、sub
和 paste
的基础 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]) })
如果我有一个包含以下内容的向量:
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 转换为最后一个向量?
这是使用 substr
、sub
和 paste
的基础 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]) })