読者です 読者をやめる 読者になる 読者になる

一所懸命に手抜きする

監査の仕事をしています。ITを利用し、良い意味で「手抜き」することは効率化と精度アップに役立つと思うんです。部下への引き継ぎのためにまずは諸々頭から引っ張り出そうとブログを始めました。

[ Main ]  [ 別館 ]
当ブログで取り上げられている事案やデータベース、人物等はすべてフィクションです。

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

広告を非表示にする