1. ホーム
  2. r

[解決済み] Rでsystem.fileやfile.pathを使ってファイルを読み込むことができない?

2022-01-28 19:29:49

質問

あるプログラムを使っているのですが、そのプログラムで "sam" ファイルを読み込む必要があります。しかし、与えられたコードでは data.file 変数が必要で、代わりに "" のように、代わりに空白が表示されます。

これが与えられたコードです。

data.file <- system.file(file.path('extdata', 'vignette-sam.txt'), package='flipflop')

入れてみました。

data.file <- system.file(file.path("Users", "User1", "Desktop", "Cond_18", 
                                   "Sorted_bam_files", "Cond_18_1.bam_sorted.sam"), 
                         package='flipflop')

パスは間違いなく正しく、パッケージ名は flipflop . しかし、私は変数 data.file が生成されます。 "" . そのため、ファイルが読み込まれず、スクリプトを実行することができません。

また、1つのバージョンにファイルパス全体を入れました。

data.file <- system.file('/Users/User1/Desktop/Cond_18/Sorted_bam_files/DBM_18_1.bam_sorted.sam', 
                         package='flipflop')

そのバージョンでは file.path しかし、これはスクリプトの例の一つです。

これらの変数を使用するコードの行はこれです。

if(preprocess.instance==''){
  print('PRE-PROCESSING sam file ....')
  data.file <- path.expand(path=data.file) # In case there is a '~' in the input path
  if(data.file==''){ print('Did you forget to give a SAM file?') ; return(NULL) } 
  annot.file   <- path.expand(path=annot.file)
  samples.file <- path.expand(path=samples.file)

そして、data.fileは "" はデフォルトで NULL .

解決方法は?

を使用します。 system.file は、参照したいファイルがパッケージのものである場合に使用します。 以下は、ヘルプファイルの system.file にはこう書かれています。

パッケージなどに含まれるファイルのフルファイル名を検索します。

自分のマシンにあるファイルを参照したいだけでしょう。パスを直接保存して、それをdata.fileとして使用することができます。

data.file <- "C:/path/to/your/file"

このスクリプトでは file.path これは、プラットフォームに依存しない方法でパスを生成する、より安全な方法だからです。例えば

> file.path("C:", "Users", "BotsRule", "Code", "myawesomeRscript.R")
[1] "C:/Users/BotsRule/Code/myawesomeRscript.R"

つまり、この問題を解決するには、実際に 何か ちょうど 何でも で、ファイルへのパスを正しく指定します。