Rscript无法使用cygwin路径查找文件

时间:2018-01-06 16:40:41

标签: r cygwin rscript

我在Windows 7上运行cygwin并且遇到Rscript问题。 我想在bin目录中将R文件作为R脚本运行,但Rscript似乎与cygwin路径名有问题。这是一个示例Rscript文件。

$ which test.R
/cygdrive/e/Glenn/bin/test.R
$ ls -l /cygdrive/e/Glenn/bin/test.R
-rwxr-xr-x+ 1 Glenn None 36 Jan  6 08:06 /cygdrive/e/Glenn/bin/test.R
$ cat /cygdrive/e/Glenn/bin/test.R
#!/usr/bin/env Rscript
print("hi")

当我尝试运行test.R

时,基本问题是错误
$ test.R
Fatal error: cannot open file '/cygdrive/e/Glenn/bin/test.R': No such file or directory

在诊断问题时,我发现我可以使用Rscript显式执行代码,但是如果使用了cygwin样式的路径则不行。

$ Rscript /cygdrive/e/Glenn/bin/test.R
Fatal error: cannot open file '/cygdrive/e/Glenn/bin/test.R': No such file or directory

$ Rscript E:/Glenn/bin/test.R
[1] "hi"
$ which Rscript
/cygdrive/c/Program Files/R/R-3.1.2/bin/Rscript

我想解决问题或找到一个好的解决方法。

由于@varro的回答,在更好地理解了问题后,我写了这个黑客:

$ cat ~/bin/myRscript
#!/bin/bash
winpath=$(cygpath -d "$1")
shift
Rscript $winpath "$@"

然后我重写了test.sh:

$ cat ~/bin/test.R
#!/usr/bin/env myRscript
print("hi")

它有效,但我不喜欢黑客,我想要一个更便携的解决方案。

$ which test.R
/cygdrive/e/Glenn/bin/test.R
$ test.R
[1] "hi"

1 个答案:

答案 0 :(得分:1)

根据“程序文件”下的Rscript的位置判断,它看起来不像是一个Cygwin程序,所以当然它不会理解Cygwin路径。你想在Cygwin环境中运行它,你必须安装Cygwin版本的R,我认为它可以在Cygwin Ports下使用。