我必须要么盲目要么愚蠢,但我无法继续前进:
我有一个变量 sourceName 定义为:
sourceName = file.path(dataDatabase, dates[1], paste0(exchange, "_", ticker, "_trade.csv"))
Run Code Online (Sandbox Code Playgroud)
这是这个字符串:
"/home/malejg/goxtrader/data/2014-12-12/Bitfinex_BTC_trade.csv"
Run Code Online (Sandbox Code Playgroud)
当我检查文件的存在性时,我得到以下结果:
> file.exists(sourceName)
> [1] TRUE
Run Code Online (Sandbox Code Playgroud)
所以该文件肯定存在。但是当我在 if 语句中使用上面的代码时:
if(file.exists(sourceName)){
some sample code here}
Run Code Online (Sandbox Code Playgroud)
它抛出一个错误:
Error in if (file.exists(sourceName)) { : argument is of length zero
Run Code Online (Sandbox Code Playgroud)
这怎么可能?该代码在 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] 统计图形 grDevices utils
数据集方法基础其他附加包:[1] data.table_1.9.4 xts_0.9-7
zoo_1.7-11通过命名空间加载(且未附加):[1] chron_2.3-45
grid_3.1.2lattice_0.20-30 plyr_1.8.1 [5] Rcpp_0.11.5
reshape2_1.4.1 stringr_0.6.2 tools_3.1.2
这是一个非常投机的答案......
我file.exists只能按如下方式返回零长度的逻辑向量:
> file.exists(character(0))
logical(0)
Run Code Online (Sandbox Code Playgroud)
所以我的初步假设是你错误地擦除了应该是文件路径的变量并错误地传递了一个零长度字符向量file.exists。
这意味着从某种意义上说这isTRUE 是最安全的选择,但就我个人而言,我很难想到将零长度向量传递给file.exists我是故意的情况,我可能希望看到该错误并修复它。