我在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"
答案 0 :(得分:1)
根据“程序文件”下的Rscript的位置判断,它看起来不像是一个Cygwin程序,所以当然它不会理解Cygwin路径。你想在Cygwin环境中运行它,你必须安装Cygwin版本的R,我认为它可以在Cygwin Ports下使用。