无法使用R中的system.file或file.path加载文件?

时间:2017-06-27 14:15:25

标签: r

我正在使用一个程序,要求我加载一个" 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时,它都会生成""。因此永远不会加载文件,脚本也无法运行。

我还将整个文件路径放入其中一个版本:

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

1 个答案:

答案 0 :(得分:6)

当您要引用的文件来自包时,使用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"

因此,您的问题的解决方案是确保您实际上正在某些只是任何来正确指定文件的路径。