一所懸命に手抜きする

デスクワークばかりのスポーツ嫌いで50歳も過ぎ、いよいよ足腰に衰えを感じつつある昨今。

R言語で特定の文字列より左側、右側の文字列を返すユーザー関数

 HTMLやXML,iCalを処理することがあるのですが、ある文字列より右側の文字列とか左側の文字列を抽出したいことがあります。

splitLeft("SUMMARY:東京オリンピック出場",":")
##SUMMARY

splitRight("SUMMARY:東京オリンピック出場",":")
##東京オリンピック出場

 こういう感じです。
 iCalの場合、各行の初出の : より左側が項目名、右側が内容となっていますので、:で左右に分割する必要があります。
 こういうことをするwrapperを作りましたのでよろしければどうぞ。

[R]ユーザー関数 splitLeft(),splitRight()
splitLeft<-function(str,separ){
        # str    target string     対象文字列
        # separ  separator         分割する文字列

        strsplit(str,separ)[[1]][[1]]
}

splitRight<-function(str,separ){
        # str    target string     対象文字列
        # separ  separator         分割する文字列

    pos<-regexpr(separ,str)[1]+nchar(separ)
    substr( str, pos, nchar( str ))
}

 splitLeft はもともとセパレーター文字列で分割した1個目の要素を求めるのでstrsplitをwrapしています。
 splitRight はセパレータ文字列の次の文字から最後の文字までを抽出しています。
 区切り文字は何文字でもかまいません。

These functions divide strings(arg1) by separator(arg2),
 and strLeft returns the strings on the left,
  strRight returns the strings on the right.

example.
str<-"DTEND;TZID=Asia/Tokyo:20150315T100000"
(strL<-splitLeft(str,":"))
[1]DTEND;TZID=Asia/Tokyo

splitRight(strL,"=")
[1]Asia/Tokyo