2017-01-05 8 views
0

これは難しくて珍しい要求のようには思えませんが、何かを探すのに苦労しています。私は間違ったキーワードや何かを探しているに違いない。read.csvからbasenameを取得

infile <- read.csv(args[1], sep="\t", check.names=FALSE, row.names = 0) 

を我々はargs[1]は、ファイルパスに評価言えばと~/some/arbitrary/path/mydatafile.tsv

がどのように私は、ファイル名のベースを取得できます。私はそうのようなread.csvまたは類似、とにファイルを読み込む場合はRで

、 == "mydatafile"(変数名ではありません)をRの中に入れて、出力ファイルに追加するために使うことができます。例えば、以下のように入力ファイル名に基づいて名前を付けます:

# Do some analysis on mydatafile.tsv and make myplot, then: 

outfile = basename(infile) # <- this should evaluate to the basename or similar of the input file 

plotly_IMAGE(myplot, 
     width = 1024, 
     height = 768, 
     format = "png", 
     username="xxx", 
     key="xxx", 
     scale = 1, 
     out_file = paste(outfile,"png", sep=".")) 

EDIT 私のクエリに対する最終的な解決は、他のスレッド(すなわち、 basename()tools::ライブラリの別々の使用)、私の具体的な質問は、重複した重複と微妙に異なっていました - 別の方法(この場合はread.csv)から直接ファイル名を引き出すオプションを探していましたが、 :)私はそれが閉鎖されるべきか、それに基づいていないと感じるならば改造機に任せます。

+1

ベース名は、ここでは 'mydatafile'を意味しますか? – MichaelChirico

+0

ええ、私ができるほど明確にしようとしました。すなわち入力ファイル "mydatafile.tsv"の場合、プロットの最終的な出力イメージは 'paste()'によって結合された後に "mydatafile.png"になります。 –

+0

'gsub(" \\ .. * $ "、" "、basename("〜/ some/arbitrary/path/mydatafile.tsv "))'は "mydatafile"を返します。 – lmo

答えて

6

私はgsubは、最初に見つかっ.でピックアップしますので、私はgsub溶液上にこれを好む

basename(tools::file_path_sans_ext("/some/arbitrary/path/mydatafile.tsv")) 

をお勧めします。比較:

basename(tools::file_path_sans_ext("/some/arbitrary/path/my.data.file.tsv")) 

gsub("\\..*$", "", basename("/some/filepath/my.data.file.tsv")) 
+2

私は@ Benjaminのソリューションが好きですが、 'gsub'はこの' gsub( "。* /(。*)\\ .. *"、 "\\ 1"、 "/some/filepath/my.data" file.tsv ")' – G5W

3

とRでツール・ライブラリでは、ファイルの拡張子を含むファイル名を受け入れ、ファイル拡張子なしのファイル名で応答関数file_path_sans_extを()、が存在します。

は(パスからファイルの拡張子を含むファイル名を選ぶ)のbasename()とのことを組み合わせて、あなたが行われています。

library(tools) 
file_name_without_extension <- file_path_sans_ext(basename(args[1]))