gpt4 book ai didi

r - 人名去大写(考虑 ' 和 -)

转载 作者:行者123 更新时间:2023-12-04 18:37:15 24 4
gpt4 key购买 nike

我有一个(人类)名字的向量,全部用大写字母表示:

names <- c("FRIEDRICH SCHILLER", "FRANK O'HARA", "HANS-CHRISTIAN ANDERSEN")

到目前为止,要取消大写(仅大写第一个字母),我正在使用
simpleDecap <- function(x) {
s <- strsplit(x, " ")[[1]]
paste0(substring(s, 1,1), tolower(substring(s, 2)), collapse=" ")
}
sapply(names, simpleDecap, USE.NAMES=FALSE)
# [1] "Friedrich Schiller" "Frank O'hara" "Hans-christian Andersen"

但是我也想占 '- .使用 s <- strsplit(x, " |\\'|\\-")[[1]]当然找到了正确的字母,但随后崩溃 '-迷路。因此,我试过
simpleDecap2 <- function(x) {
for (char in c(" ", "\\-", "\\'")){
s <- strsplit(x, char)[[1]]
x <-paste0(substring(s, 1,1), tolower(substring(s, 2)), collapse=char)
} return x
}

sapply(名称,simpleDecap,USE.NAMES=FALSE)

但这当然更糟,因为结果一个接一个地拆分:
sapply(names, simpleDecap2, USE.NAMES=FALSE)
# [1] "Friedrich schiller" "Frank o'Hara" "Hans-christian andersen"

我认为正确的方法是根据 s <- strsplit(x, " |\\'|\\-")[[1]] 进行拆分,但 paste=是问题所在。

最佳答案

这似乎有效,使用 Perl 兼容的正则表达式:

gsub("\\b(\\w)([\\w]+)", "\\1\\L\\2", names, perl = TRUE)
\L将以下匹配组转换为小写。

关于r - 人名去大写(考虑 ' 和 -),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32760308/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com