File.exists()不起作用

时间:2015-03-16 17:54:38

标签: r

我必须要么是盲目的,要么是愚蠢的,但我无法继续前进:

我有一个变量sourceName,定义为:

sourceName = file.path(dataDatabase, dates[1], paste0(exchange, "_", ticker, "_trade.csv"))

这是这个字符串:

 "/home/malejg/goxtrader/data/2014-12-12/Bitfinex_BTC_trade.csv"

当我检查文件的existenece时,我得到以下结果:

> file.exists(sourceName)
> [1] TRUE

所以文件肯定存在。但是当我在if语句中使用上面的代码时:

 if(file.exists(sourceName)){
    some sample code here}

它会抛出错误:

 Error in if (file.exists(sourceName)) { : argument is of length zero

怎么可能? 代码在Windows上运行良好,那么是否存在一些Linux相关问题?

会话信息:

  

sessionInfo()R版本3.1.2(2014-10-31)平台:   x86_64-pc-linux-gnu(64位)

     

区域设置:[1] LC_CTYPE = en_US.UTF-8 LC_NUMERIC = C
  [3] LC_TIME = en_US.UTF-8 LC_COLLATE = en_US.UTF-8 [5]   LC_MONETARY = en_US.UTF-8 LC_MESSAGES = en_US.UTF-8 [7]   LC_PAPER = en_US.UTF-8 LC_NAME = C [9]   LC_ADDRESS = C LC_TELEPHONE = C [11]   LC_MEASUREMENT = en_US.UTF-8 LC_IDENTIFICATION = C

     

附加基础包:[1] stats graphics grDevices utils
  数据集方法基础

     

其他附件包:[1] data.table_1.9.4 xts_0.9-7
  zoo_1.7-11

     

通过命名空间加载(而不是附加):[1] chron_2.3-45
  grid_3.1.2 lattice_0.20-30 plyr_1.8.1 [5] Rcpp_0.11.5
  reshape2_1.4.1 stringr_0.6.2 tools_3.1.2

2 个答案:

答案 0 :(得分:3)

这是一个极具推测性的答案......

我可以让file.exists返回零长度的逻辑向量,如下所示:

> file.exists(character(0))
logical(0)

所以我的暂定假设是你错误地擦除了应该是文件路径的变量,并错误地将零长度字符向量传递给file.exists

这意味着isTRUE 在某种意义上是最安全的选项,但我个人很难想到将零长度向量传递给file.exists的情况对我而言是有意的,我可能希望看到错误并修复它。

答案 1 :(得分:1)

您应该使用isTRUE()

if (isTRUE(file.exists(sourceName))) {
    cat('Found')
}