次のようなファイルの名前があります:name1.csv
そして、この文字列の2つの部分文字列を抽出したいと思います。 1つの変数にname1
を格納するものと、別の変数にドットなしで拡張子csv
を格納するものがあります。
indexOf
のようなJavaのような操作ができるような関数があるかどうかを検索しましたが、何も見つかりませんでした。
何か助け?
strsplit
を使用:
_R> strsplit("name1.csv", "\\.")[[1]]
[1] "name1" "csv"
R>
_
A)(正規表現のメタキャラクターであるため)ドットをエスケープする必要があり、b)strsplit()
が通常は最初の要素のみが対象のリストを返すという事実に対処することに注意してください。
より一般的なソリューションには、一致を抽出できる正規表現が含まれます。
ファイル名の特殊な場合には、次のものもあります。
_R> library(tools) # unless already loaded, comes with base R
R> file_ext("name1.csv")
[1] "csv"
R>
_
そして
_R> file_path_sans_ext("name1.csv")
[1] "name1"
R>
_
これらは非常に一般的なタスクであるため(シェルのbasename
などを参照)。
strsplit()
を使用します。
http://stat.ethz.ch/R-manual/R-devel/library/base/html/strsplit.html
例:
> strsplit('name1.csv', '[.]')[[1]]
[1] "name1" "csv"
2番目の引数は正規表現であるため、単一のドットを渡すことはできません(「任意の文字」として解釈されます)。
正規表現を使用して、たとえばこれを行うことができます
regmatches(x='name1.csv',gregexpr('[.]','name1.csv'),invert=TRUE)
[[1]]
[1] "name1" "csv"