ファイル名のテキスト列を含む data.frame があります。パスまたはファイル拡張子なしでファイル名を返したいと思います。通常、ファイル名には番号が付けられていますが、そうである必要はありません。例えば:
df<-data.frame(data=c("a","b"),fileNames=c("C:/a/bb/ccc/NAME1.ext","C:/a/bb/ccc/d D2/name2.ext"))
に相当するものを返したい
df<-data.frame(data=c("a","b"),fileNames=c("NAME","name"))
しかし、gsubでこれを行うための洗練された正規表現がわかりません。たとえば、次のように拡張子を削除できます (ファイル名が数字で終わる場合)。
gsub('([0-9]).ext','',df[,"fileNames"])
私はさまざまなパターンを試してきましたが (このサイトの正規表現ヘルプ ファイルと同様のソリューションを読んで)、最後の "/" と最初の "." の間のテキストを返す正規表現を取得できません。同様の質問に対する考えや転送は大歓迎です!
私が得た最高のものは次のとおりです。
gsub('*[[:graph:]_]/|*[[:graph:]_].ext','',df[,"fileNames"])
しかし、これは 1) 先頭のパス文字をすべて取り除くわけではなく、2) 特定のファイル拡張子に依存しています。