最近安装R-3.0.1后出现了"/usr/bin/env: RScript: No such file or directory"错误。

4
我在安装和使用R时有些迷惑。我从源代码安装了R 3.0.1,并按照建议执行了./configure、make、make check和make install步骤。但是,当我尝试运行R时,它表示R不在/usr/bin文件夹中。因此,我使用cp命令将整个R-3.0.1/bin目录复制到了我的/usr/bin目录中。现在,在尝试使用我从O'Reilly R In a Nutshell书籍中编写的hello_world.R脚本时,我遇到了关于/usr/bin/env的几个错误。我将hello_world.R文件存储在一个文件中,内容如下:
#! /usr/bin/env RScript
print("Hello World!");

简单易懂,但当我尝试加载它时,出现以下错误:
$ ./hello_world.R
/usr/bin/env: RScript: No such file or directory

我不确定这是路径问题还是其他问题,但当我在我的/usr/bin目录中搜索时,我看到那里有RScript文件以及与R编程语言相关的其他文件(R,BATCH等)。非常感谢您的帮助。干杯。


你使用的是哪个操作系统/发行版? - Jake Burkhead
你有特别的原因要从源代码安装而不是使用“apt-get install”吗? - Jake Burkhead
1
在R中,Sys.which("Rscript")的输出是什么? - dickoa
4
应该写成 Rscript,而不是 RScript - Vincent Zoonekynd
1
那就是问题所在了,它使用小写的's'可以工作,书中一定有错别字。谢谢! - user2555016
显示剩余4条评论
5个回答

6

你的shebang行中可能使用了无效的Rscript命令行选项。

例如...

#!/usr/bin/env RScript --vanilla

删除“--vanilla”(或其他有问题的选项),然后重新运行您的脚本。

#!/usr/bin/env RScript

我知道你的示例中没有涉及到这个问题,但是这个解决方案可能会帮助到其他遇到相同问题的人。


确实,这个解决方案帮助了其他人 :) 包括我! - jkr

4

再次提到,这个问题的好解决方案非常简单,并且在env的手册中有清晰的解释。脚本应该使用env命令来调用Rscript而不是直接调用Rscript

#!/usr/bin/env Rscript

some R code now...

但是像这样的脚本将会读取用户的.Rprofile等内容。当我们想要启动一个干净且可控的R环境时,需要使用选项--vanilla来启动原始版本的R。如果您尝试以下操作:

#!/usr/bin/env Rscript --vanilla

some R code now...

env会把字符串Rscript --vanilla作为要执行的命令,并且必然会返回错误消息。

/usr/bin/env: ‘Rscript --vanilla’: No such file or directory

env的手册页中,有一个名为-S的选项用于拆分字符串。它的作用正是解决上述问题,并使用第一个字符串Rscript作为命令名称,以及后面的字符串(如--vanilla)作为要传递给Rscript的选项。
因此,解决方案如下:
#!/usr/bin/env -S Rscript --vanilla

some R code now...

2
在您的脚本的shebang行中加入#!/usr/bin/Rscript,它应该可以工作。
另外,如果您想保持与CRAN的R版本同步,而不是依赖于您的Linux发行版(Ubuntu)的本地R,则请在apt源中添加以下行:
deb http://my_favorite_cran_mirror/bin/linux/ubuntu raring/

之后,您可以始终使用apt系统来安装R,我同意Jake的观点-这应该是安装R的首选方式。

*使用靠近您的有效CRAN镜像替换my_favorite_cran_mirror。


1
如果在/usr/bin中没有安装Rscript,那么你就很遗憾了。例如,在MacOS 10.11“El Capitan”上就会出现这种情况。更便携的解决方案是使用shebang行,例如#!/usr/bin/env Rscript,因为env的位置在Unix系统中更加标准化。是的,除了Linux之外还有类UNIX操作系统... :-) - András Aszódi
我同意,可悲的是还有其他“类Unix操作系统”甚至不允许管理员写入/usr/bin。 - Costas B.

1
#! /usr/bin/env RScript
print("Hello World!");

虽然很简单,但是当我尝试加载它时,我遇到了以下错误:

$ ./hello_world.R
/usr/bin/env: RScript: No such file or directory

你犯了一个错误,应该写成 Rscript 而不是 RScript。 语法应该是:
#! /usr/bin/env Rscript
print("Hello World!");

然后运行它,它会工作的(y),祝一切顺利。
$./hello_world.R

1
我在一台集群计算机上遇到了这个问题,我无法控制R安装。我试图理解这个错误信息,通常情况下,当我将makefile中的“Rscript”转换为“/usr/bin/Rscript”时,错误信息不再出现。请注意保留html标签。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接