R言語で区切り文字による文字列の分割
今回は、区切り文字を指定して、文字列を分割してリスト化する方法を紹介します。
strsplit関数
strsplit関数を使うと任意の文字を区切り文字として、文字列を分割できます。例えば以下のように使います。
input <- "abc def ghi" res <- strsplit(input, " ")
区切り文字は正規表現
区切り文字はスペースやタブ(\t)などを指定しますが、実は、正規表現の扱いになっています。なので、+(1文字以上の繰り返し)のような表現を加えると、スペースやタブスペースが連続して入っている箇所を1回の区切りとして扱えます。
#abcの後にはスペースが一つ、defの後にはスペースが2つ入っています。 input2 <- "abc def ghi" res2 <- strsplit(input2, " ") #これだとabc, def,その後に空要素、そしてhgiが続きます。 res3 <- strsplit(input2, " +") #これだとabc, def, hgiだけになります。スペース2文字を区切り文字扱いするので、空要素ができません。
unlist関数でリスト内容にアクセス
strsplit関数の出力結果は、リストオブジェクトです。このオブジェクトだと、要素数が1で、分割した文字列にアクセスできません。そこでunlist関数を利用して、出力結果を配列にします。
input <- "abc def ghi" res <- strsplit(input, " ") length(res)#1がかえります res2 <- unlist(res) length(res2)#3がかえります。インデックスで[1]から[3]を指定すると各要素にアクセスできます。