问题描述
如果我的向量具有以下内容:
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
的情况下将全部大写形式转换为最后一个向量?
解决方法
这是使用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+)$",people))
people
[1] "Person I" "Person II" "Person III" "Person IV"
,
如果格式始终相同,即两个单词之间用空格隔开,则可以使用以下内容:
sapply(strsplit(people,' '),function(X){paste(str_to_title(X[1]),X[2]) })