yuu_nkjm blog
2010-07-16(Fri) [長年日記]
[R言語] 文字列をsplitした結果をイテレータとして使う
イディオム
for(element in unlist(strsplit(分割対象, セパレータの正規表現))){}
使用例
文字列を分割した結果をイテレータとして使いたいことがあるじゃないですか.Javaで書くと,ノリとしてはこんな感じ↓
String countries = "Japan|USA|EU";
for(String country :Arrays.asList(contries.split("\\|"))){
System.out.println(country);
}
これと似たことをやろうとして,Rでこう書いたら意図通り動かなかった.
countries <- "Japan|USA|EU"
for(country in strsplit(countries, "\\|")){
str(country)
}
> chr [1:3] "Japan" "USA" "EU"
そもそも分割した結果はなんやねんと見てみると
strsplit(countries, "\\|")
>[[1]]
>[1] "Japan" "USA" "EU"
というお答え.
リストの第1成分にベクトルが入っちゃってるのが悪いのか.そこで,
for(country in unlist(strsplit(countries, "\\|"))){
str(country)
}
> chr "Japan"
> chr "USA"
> chr "EU"
とするか,
for(country in strsplit(countries, "\\|")[[1]]){
str(country)
}
> chr "Japan"
> chr "USA"
> chr "EU"
としたらいけた.デバッグ開始時は,
as.vector(strsplit(countries, "\\|"))
>[[1]]
>[1] "Japan" "USA" "EU"
としてしまって,はまった.リストはベクトルだから,これでは何も変換されないんですね.
- https://www.google.co.jp/ ×119
- https://www.google.com/ ×4
- http://search.yahoo.co.jp/ ×1
- http://hootsuite.com/dashboard ×1
- https://www.google.co.jp/ ×1
- https://www.google.co.th/ ×1
- http://brizzly.com/ ×1
- R言語 split ×6 / R言語 イテレータ ×3 / java 文字列 イテレータ ×3 / ruby split イテレータ ×3 / r 文字列 strplit ×2 / C#2010 イテレータ 使い方 ×2 / C#2010 イテレータ 文字列 ×2 / r 文字列 分割 strsplit ×1 / mysql strSplit ×1 / イテレーター 動かない ×1 / split 使用例 "-" シェル ×1 / strsplit 使用例 ×1 / uwsc イテレータ ×1 / C#2010 イテレータ ×1 / R言語 文字列 分割 ×1 / java iterator split ×1 / "PHP" "splitした" ×1 / R strsplit ×1 / bat 文字列 split ×1 / R言語 split() ×1 / R言語 文字列 分解 ×1 / r言語 for イテレーター ×1 / java iterator スプリット ×1 / R言語 asVector ×1 / イテレータ r言語 ×1 / "R言語” strsplit タブ ×1 / Java split ディープコピーしたい ×1 / strsplit java ×1 / R言語 文字列 split ×1 / UWSC split ×1 / R言語 文字の分解 ×1 / android リスト イテレータ ×1 / R言語 str split ×1 / r言語 split \ ×1 / R 文字列の分割 ×1 / split いてれーた ×1 / r言語 文字列 分離 ×1 / r言語 treemap split ×1 / java 文字列を分ける Iterator ×1 / "R言語" 文字列 Split ×1 / ruby split イテレーター ×1