可以强制R normalizePath()不截断长路径吗?

时间:2018-02-06 15:24:30

标签: r

我有一个很长的文件路径(年/月/日/分区目录样式,我只对某些分区感兴趣 - 所以通配符不能正常工作)。读取功能I内部使用调用normalizePaths。但是,如下面的简化示例所示,normalizePaths(假设我使用绝对路径开始)的唯一影响是将我的路径截断为4095个字符。这使它成为无效路径并导致我的读操作失败。

path <- paste0(rep("/pretend/path", times=400), collapse="/")
nchar(path)
# [1] 5599
nchar(normalizePath(path, mustWork = FALSE))
# [1] 4095
substr(path, 1, 4095) == normalizePath(path, mustWork = FALSE)
# [1] TRUE

我正在使用R v3.4.1。

为什么normalizePaths会截断?有没有办法改变这种行为(例如,使用options()设置)?

更新添加sessionInfo

R version 3.4.1 (2017-06-30)
Platform: x86_64-redhat-linux-gnu (64-bit)
Running under: Red Hat Enterprise Linux Server release 6.6 (Santiago)

Matrix products: default
BLAS: /usr/lib64/R/lib/libRblas.so
LAPACK: /usr/lib64/R/lib/libRlapack.so

locale:
 [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

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

loaded via a namespace (and not attached):
[1] compiler_3.4.1

0 个答案:

没有答案