[R]同じ文字列を繰り返した文字列を作成する
stirngrパッケージのstr_dup関数を使う。
> library(stringr)
> s <- "崩壊3rd"
> str_dup(s, 1:3)
[1] "崩壊3rd" "崩壊3rd崩壊3rd" "崩壊3rd崩壊3rd崩壊3rd"
> s <- c("ゼンレスゾーンゼロ", "崩壊3rd", "鳴潮")
> str_dup(s, 1:3)
[1] "ゼンレスゾーンゼロ" "崩壊3rd崩壊3rd" "鳴潮鳴潮鳴潮"
stirngrパッケージのstr_dup関数を使う。
> library(stringr)
> s <- "崩壊3rd"
> str_dup(s, 1:3)
[1] "崩壊3rd" "崩壊3rd崩壊3rd" "崩壊3rd崩壊3rd崩壊3rd"
> s <- c("ゼンレスゾーンゼロ", "崩壊3rd", "鳴潮")
> str_dup(s, 1:3)
[1] "ゼンレスゾーンゼロ" "崩壊3rd崩壊3rd" "鳴潮鳴潮鳴潮"
Rは、文字列が数値に変換できるかどうか判定する関数は、初期状態では実装されていない。そのため、次のような自作関数を使用する。
is_numeric <- function(s) {return(!is.na(suppressWarnings(as.numeric(s))))}
動作例は以下のとおり。数値に変換できない文字列はNAが返されるが、suppressWarnings関数により警告の表示が抑制されるため、そのままis.na関数で変換できたかどうか判定することができる。
> is_numeric(" ")
[1] FALSE
> is_numeric("1")
[1] TRUE
> is_numeric("2.0")
[1] TRUE
> is_numeric(" 3.0 ")
[1] TRUE
> is_numeric("4.e4")
[1] TRUE
> is_numeric("Senadia")
[1] FALSE
> is_numeric("セナディア")
[1] FALSE
stringrパッケージのstr_length関数かstr_width関数を使う。str_length関数は文字数を返す。str_width関数は、文字列を等幅フォントで表示される際の幅(半角英数字が1)を返す。最後の例のとおり、サロゲートペアの文字(𩹉)も幅が2と判定されている。
> s <- c("崩壊3rd", "鈴木みのり", "セナディア", "補塡する")
> s <- c(s, paste0(rawToChar(as.raw(c(0xf0, 0xa9, 0xb9, 0x89))), "(飛魚)"))
> s
[1] "崩壊3rd" "鈴木みのり" "セナディア" "補塡する" "𩹉(飛魚)"
> library(stringr)
> str_length(s)
[1] 5 5 5 4 5
> str_width(s)
[1] 7 10 10 8 10
いわゆる空白埋めをした文字列を得る方法。stringrパッケージのstr_pad関数を使う。指定の文字列の長さより短い長さを指定すると文字列がそのまま返される。
> library(stringr)
> s <- "SENADIA"
> s
[1] "SENADIA"
> str_pad(s, 10)
[1] " SENADIA"
> str_pad(s, 5)
[1] "SENADIA"
デフォルトでは、文字列の長さは、等幅フォントで表示される際の幅(半角英数字が1)で処理する。これを文字数で処理する場合はuse_widthオプションにFALSEを指定する。
> s <- "崩壊3rd"
> str_pad(s, 7)
[1] "崩壊3rd"
> str_pad(s, 7, use_width = FALSE)
[1] " 崩壊3rd"
デフォルトでは文字列の先頭に空白(0x20)が追加される。sideオプションを使うと、先頭か末尾か先頭・末尾のいずれかを指定できる。padオプションに文字を指定するとその文字が追加される。
> s <- "セナディア"
> str_pad(s, 7, side = "left", use_width = FALSE)
[1] " セナディア"
> str_pad(s, 7, side = "right", use_width = FALSE)
[1] "セナディア "
> str_pad(s, 7, side = "both", use_width = FALSE)
[1] " セナディア "
> str_pad(s, 7, side = "both", pad = "*", use_width = FALSE)
[1] "*セナディア*"
stringrパッケージのstr_flatten関数を使う。要素を連結させるベクトルは一つしか与えることができない。デフォルトでは要素の間には何も挟まずに連結するが、第二引数かcollapseオプションに文字列を指定すると、要素の間にその文字列を挟んで連結する。戻り値は当然長さが1の文字列型ベクトル(A string, i.e. a character vector of length 1.)。
> library(stringr)
> s <- c("マクロスΔ","カナメ役", "安野希世乃さん", "かわいい")
> print(s)
[1] "マクロスΔ" "カナメ役" "安野希世乃さん" "かわいい"
> str_flatten(s)
[1] "マクロスΔカナメ役安野希世乃さんかわいい"
> str_flatten(s, ",")
[1] "マクロスΔ,カナメ役,安野希世乃さん,かわいい"
> str_flatten(s, collapse = ",")
[1] "マクロスΔ,カナメ役,安野希世乃さん,かわいい"
stringrパッケージのstr_sub関数を使う。第二引数に文字数を負数にして指定すると、末尾から何文字という指定になる。
> library(stringr)
> s <- c("鈴木みのりさん、かわいい", "瀬戸麻沙美さん、かわいい")
> str_sub(s, -10) # 末尾から10文字目まで
[1] "みのりさん、かわいい" "麻沙美さん、かわいい"
baseパッケージには、文字列の末尾から文字数を指定して文字列を取り出せる関数(VBAであればRight関数)は搭載されていない。この動作を実現させるには、nchar関数とsubstr関数を組み合わせて使う。
> s <- c("鈴木みのりさん、かわいい", "瀬戸麻沙美さん、かわいい")
> nchar(s)
[1] 12 12
> n <- 10 # 末尾から取り出す文字数を指定
> substr(s, nchar(s) - n + 1, nchar(s)) # 末尾から10文字目まで取り出す
[1] "みのりさん、かわいい" "麻沙美さん、かわいい"
stringrパッケージのstr_sub関数を使うと、少しだけ簡単に実現することができる。
stringrパッケージのstr_sub関数を使う。第二引数を指定せず第三引数に正数を指定すると、先頭から何文字まで取り出すという指定になる。
> library(stringr)
> s <- c("鈴木みのりさん、かわいい", "瀬戸麻沙美さん、かわいい")
> str_sub(s, , 5) # 先頭から5文字目まで
[1] "鈴木みのり" "瀬戸麻沙美"
> str_sub(s, , 7) # 先頭から7文字目まで
[1] "鈴木みのりさん" "瀬戸麻沙美さん"
baseパッケージには、文字列の先頭から文字数を指定して文字列を取り出せる関数(VBAであればLeft関数)は搭載されていない。この動作を実現させるには、substr関数を使う。
> s <- c("鈴木みのりさん、かわいい", "瀬戸麻沙美さん、かわいい")
> substr(s, 1, 5) # 先頭から5文字目まで
[1] "鈴木みのり" "瀬戸麻沙美"
> substr(s, 1, 7) # 先頭から7文字目まで
[1] "鈴木みのりさん" "瀬戸麻沙美さん"
stringrパッケージのstr_sub関数を使うと、少しだけ簡単に実現することができる。
stringrパッケージのstr_sub関数を使う。第二引数に取り出したい文字列が始まる位置を、第三引数に終わる位置をそれぞれ先頭から何文字目か(1~)を指定する。それぞれ引数は省略することができ、省略した場合は以下のようになる。また負数を指定することもでき、その場合の動作は以下のようになる。
> library(stringr)
> s <- c("鈴木みのりさん、かわいい", "瀬戸麻沙美さん、かわいい")
> str_sub(s, 3, 5) # 3~5文字目
[1] "みのり" "麻沙美"
> str_sub(s, 3) # 3文字目以降すべて
[1] "みのりさん、かわいい" "麻沙美さん、かわいい"
> str_sub(s, , 5) # 先頭から5文字目まで
[1] "鈴木みのり" "瀬戸麻沙美"
> str_sub(s, -10) # 末尾から10文字目まで
[1] "みのりさん、かわいい" "麻沙美さん、かわいい"
> str_sub(s, , -8) # 末尾から8文字取り除く
[1] "鈴木みのり" "瀬戸麻沙美"
Access VBA Anaconda C# Excel Excel VBA Fortran gcc gnuplot Java Julia(その他) Microsoft Access Microsoft Excel Octave Open JDK Perl Python Python(Anaconda) Python(インターネット) Python(テキストマイニング) Python(ファイル・ディレクトリの操作) Python(リスト) Python(変数とオブジェクト) Python(実行とデバッグ) Python(数と式) Python(数学) Python(文字と文字列) Python(正規表現) Python(環境) Python(行列) Rの操作 R(ggplot2) R(maptools) R(tidyverse) R(その他) R(インターネット) R(グラフィックス) R(セイバーメトリクス) R(テキストファイルの入出力) R(データフレーム) R(データベース) R(パッケージ) R(ファイルの入出力) R(ファイル・ディレクトリの操作) R(ベクトル) R(リスト) R(作図) R(地理空間情報) R(変数とオブジェクト) R(数と式) R(数値計算) R(数学) R(文字と文字列) R(日付と時刻) R(本の計算を再現) R(正規表現) R(演算子と制御構文) R(環境) R(画像) R(統計学) R(統計解析) R(行列) Visual Basic Visual C++