R lang:首字母大写
R lang: First letter to upper case
我正在尝试将列中的所有数据转换为 "First letter to upper case"
以下代码用第一行替换所有数据,
simpleCap <- function(x) {
s <- strsplit(x, " ")[[1]]
paste(toupper(substring(s, 1,1)), substring(s, 2),
sep="", collapse=" ")
}
allDestination$Categories <- simpleCap(allDestination$Categories)
示例数据
japan/okinawa/okinawa-other-islands
japan/hokkaido/hokkaido-north/furano-biei-tomamu
japan/hokkaido/hokkaido-north/asahikawa-sounkyo
japan/hokkaido/hokkaido-north/wakkanai-rishiri-rebun
japan/hokkaido/hokkaido-east/kushiro-akan-nemuro
函数代码示例来自
First letter to upper case
如何使函数成为 "column compatible" 而不是仅替换单个值?
你可以在后面使用负向观察,将前面有非字母或位于句子开头的每个字母大写,即 (?:^|(?<=\W))(.)
或者你也可以将其视为大写字母前面没有字母,即 (?<!\w)(.)
gsub("(?<!\w)(.)","\U\1",dat1$V1,perl = TRUE)
[1] "Japan/Okinawa/Okinawa-Other-Islands"
[2] "Japan/Hokkaido/Hokkaido-North/Furano-Biei-Tomamu"
[3] "Japan/Hokkaido/Hokkaido-North/Asahikawa-Sounkyo"
[4] "Japan/Hokkaido/Hokkaido-North/Wakkanai-Rishiri-Rebun"
[5] "Japan/Hokkaido/Hokkaido-East/Kushiro-Akan-Nemuro"
数据:
dat1=read.table(strip=T,text="japan/okinawa/okinawa-other-islands
japan/hokkaido/hokkaido-north/furano-biei-tomamu
japan/hokkaido/hokkaido-north/asahikawa-sounkyo
japan/hokkaido/hokkaido-north/wakkanai-rishiri-rebun
japan/hokkaido/hokkaido-east/kushiro-akan-nemuro")
Tidyverse 答案 - 有一个函数专门用于此 stringr::str_to_title
library(tidyverse)
数据示例:
data_1 <-
data.frame("japan/okinawa/okinawa-other-islands",
"japan/hokkaido/hokkaido-north/furano-biei-tomamu",
"japan/hokkaido/hokkaido-north/asahikawa-sounkyo",
"japan/hokkaido/hokkaido-north/wakkanai-rishiri-rebun",
"japan/hokkaido/hokkaido-east/kushiro-akan-nemuro",
stringsAsFactors=FALSE)
工作中的功能:
> str_to_title(data_1)
[1] "Japan/Okinawa/Okinawa-Other-Islands"
[2] "Japan/Hokkaido/Hokkaido-North/Furano-Biei-Tomamu"
[3] "Japan/Hokkaido/Hokkaido-North/Asahikawa-Sounkyo"
[4] "Japan/Hokkaido/Hokkaido-North/Wakkanai-Rishiri-Rebun"
[5] "Japan/Hokkaido/Hokkaido-East/Kushiro-Akan-Nemuro"
我正在尝试将列中的所有数据转换为 "First letter to upper case" 以下代码用第一行替换所有数据,
simpleCap <- function(x) {
s <- strsplit(x, " ")[[1]]
paste(toupper(substring(s, 1,1)), substring(s, 2),
sep="", collapse=" ")
}
allDestination$Categories <- simpleCap(allDestination$Categories)
示例数据
japan/okinawa/okinawa-other-islands
japan/hokkaido/hokkaido-north/furano-biei-tomamu
japan/hokkaido/hokkaido-north/asahikawa-sounkyo
japan/hokkaido/hokkaido-north/wakkanai-rishiri-rebun
japan/hokkaido/hokkaido-east/kushiro-akan-nemuro
函数代码示例来自 First letter to upper case
如何使函数成为 "column compatible" 而不是仅替换单个值?
你可以在后面使用负向观察,将前面有非字母或位于句子开头的每个字母大写,即 (?:^|(?<=\W))(.)
或者你也可以将其视为大写字母前面没有字母,即 (?<!\w)(.)
gsub("(?<!\w)(.)","\U\1",dat1$V1,perl = TRUE)
[1] "Japan/Okinawa/Okinawa-Other-Islands"
[2] "Japan/Hokkaido/Hokkaido-North/Furano-Biei-Tomamu"
[3] "Japan/Hokkaido/Hokkaido-North/Asahikawa-Sounkyo"
[4] "Japan/Hokkaido/Hokkaido-North/Wakkanai-Rishiri-Rebun"
[5] "Japan/Hokkaido/Hokkaido-East/Kushiro-Akan-Nemuro"
数据:
dat1=read.table(strip=T,text="japan/okinawa/okinawa-other-islands
japan/hokkaido/hokkaido-north/furano-biei-tomamu
japan/hokkaido/hokkaido-north/asahikawa-sounkyo
japan/hokkaido/hokkaido-north/wakkanai-rishiri-rebun
japan/hokkaido/hokkaido-east/kushiro-akan-nemuro")
Tidyverse 答案 - 有一个函数专门用于此 stringr::str_to_title
library(tidyverse)
数据示例:
data_1 <-
data.frame("japan/okinawa/okinawa-other-islands",
"japan/hokkaido/hokkaido-north/furano-biei-tomamu",
"japan/hokkaido/hokkaido-north/asahikawa-sounkyo",
"japan/hokkaido/hokkaido-north/wakkanai-rishiri-rebun",
"japan/hokkaido/hokkaido-east/kushiro-akan-nemuro",
stringsAsFactors=FALSE)
工作中的功能:
> str_to_title(data_1)
[1] "Japan/Okinawa/Okinawa-Other-Islands"
[2] "Japan/Hokkaido/Hokkaido-North/Furano-Biei-Tomamu"
[3] "Japan/Hokkaido/Hokkaido-North/Asahikawa-Sounkyo"
[4] "Japan/Hokkaido/Hokkaido-North/Wakkanai-Rishiri-Rebun"
[5] "Japan/Hokkaido/Hokkaido-East/Kushiro-Akan-Nemuro"