ルールに従っているidがあって、「idの冒頭2文字が数字かどうか」をチェックしたい案件がありました。
example_ids <- c("01_orange_0001001", "09_red_0001001", "aa_purple_0002002")
Pythonであれば文字列のスライスとis_digitメソッドで簡単にチェックすることができます。
example_ids = ["01_orange_0001001", "09_red_0001001", "aa_purple_0002002"] # 冒頭2文字をスライスで取り出す markets = [x[0:2] for x in example_ids] print(markets) # ['01', '09', 'aa'] # 冒頭2文字が数字かどうかをチェックする answer = [x.isdigit() for x in markets] print(answer) #[True, True, False]
Rでも似たことをできないか調べたところ、stack over flowの記述を見つけ、正規表現とgrepl関数で簡単に実現できました。
grepl("^[0-9]{2}", example_ids) #冒頭2文字が0-9であるという正規表現 #=> [1] TRUE TRUE FALSE
数字でない文字列をNAが返ることを利用して、次のように実装することもできるようです。warning出ちゃうのでイケてないですけど。
# warning出るけど !is.na(as.integer(substr(example_ids, 1, 2))) # => [1] FALSE FALSE FALSE # Warning message: # NAs introduced by coercion