Rでは変換したい
t1 <- c('this.text', 'next.text')
"this.text" "next.text"
に
'ThisText' 'NextText'
私が試してみました
gsub('\\..', '', t1)
しかし、これは私に与えます
"thisext" "nextext"
ピリオドの後に文字を置き換えることはありません。
おそらく本当に簡単ですが、私はそれを解決することはできません。
Rでは変換したい
t1 <- c('this.text', 'next.text')
"this.text" "next.text"
に
'ThisText' 'NextText'
私が試してみました
gsub('\\..', '', t1)
しかし、これは私に与えます
"thisext" "nextext"
ピリオドの後に文字を置き換えることはありません。
おそらく本当に簡単ですが、私はそれを解決することはできません。
または、正規表現ベースのソリューション:
t1 <- c('this.text', 'next.text')
# capitalize first letter
t2 <- sub('^(\\w?)', '\\U\\1', t1, perl=T)
# remove points and capitalize following letter
gsub('\\.(\\w?)', '\\U\\1', t2, perl=T)
[1] "ThisText" "NextText"
sub('^(\\w?)', '\\U\\1', t1, perl=T)
、sub
最初の一致のみに関心があるため、ここでは十分です。次に、各文字列の先頭にある最初の英数字が^(\\w?)
. 関数の置換部分での後方参照には、括弧が必要です。置換\\U
は、その後に続くすべてのもの (最初の文字) を大文字にするために使用されます。
同じ原則が適用されgsub('\\.(\\w?)', '\\U\\1', t2, perl=T)
ますが、最初の文字ではなくすべての.
.
tocamel
rapportools
パッケージからあなたが望むことをします:
> library(rapportools)
> example(tocamel)
tocaml> tocamel("foo.bar")
tocaml> ## [1] "fooBar"
tocaml>
tocaml> tocamel("foo.bar", upper = TRUE)
tocaml> ## [1] "FooBar"
tocaml>
tocaml> tocamel(c("foobar", "foo.bar", "camel_case", "a.b.c.d"))
tocaml> ## [1] "foobar" "fooBar" "camelCase" "aBCD"
tocaml>
もう1つの簡単で高速なソリューション(@rengisなど):
camel2 <- function(x) {
gsub("(^|[^[:alnum:]])([[:alnum:]])", "\\U\\2", x, perl = TRUE)
}
camel2(t1)
#> [1] "ThisText" "NextText"
@TylerRinker ソリューションとの比較:
identical(camel(t1), camel2(t1))
#> [1] TRUE
microbenchmark::microbenchmark(camel(t1), camel2(t1))
#> Unit: microseconds
#> expr min lq mean median uq max neval cld
#> camel(t1) 76.378 79.6520 82.21509 81.5065 82.7095 151.867 100 b
#> camel2(t1) 15.864 16.9425 19.76000 20.9690 21.9735 38.246 100 a
ここでは、snakecase パッケージによる別のソリューション:
install.packages("snakecase")
library(snakecase)
to_upper_camel_case(t1)
#> [1] "ThisText" "NextText"
Github リンク: https://github.com/Tazinho/snakecase
janitorパッケージのmake_clean_names()
関数には、 これに使用できる関数があります。
あなたの場合:
t1 <- c('this.text', 'next.text')
janitor::make_clean_names(t1, case = "big_camel")
#> [1] "ThisText" "NextText"
パラメータcase
は、次のいずれかになります。
“snake”, “small_camel”, “big_camel”, “screaming_snake”, “parsed”, “mixed”, “lower_upper”, “upper_lower”, “swap”, “all_caps”, “lower_camel”, “upper_camel”, “internal_parsing”, “none”, “flip”, “sentence”, “random”, “title”
reprex パッケージ(v2.0.1)により 2021-10-13 に作成