Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R是否在GUI中运行?_R_User Interface_Command - Fatal编程技术网

R是否在GUI中运行?

R是否在GUI中运行?,r,user-interface,command,R,User Interface,Command,我注意到以下情况,请单击: 我问了同样的问题,因为我需要知道我的R环境是从终端运行的,还是在GUI类型的环境中运行的 我的问题的动机是,我生成了大量的.pdf报告,如果用户调用了GUI下生成报告的函数,那么我想使用系统默认的.pdf程序打开报告,但是如果脚本是从命令行运行的,或者是通过命令行上启动的会话运行的,那么这应该被抑制 在RStudio中,如果我运行interactive(),结果是TRUE,如果我在终端打开一个R会话并运行相同的命令,结果也是TRUE,因此,我的问题本质上是,我如何区分

我注意到以下情况,请单击:

我问了同样的问题,因为我需要知道我的R环境是从终端运行的,还是在GUI类型的环境中运行的

我的问题的动机是,我生成了大量的
.pdf
报告,如果用户调用了GUI下生成报告的函数,那么我想使用系统默认的
.pdf
程序打开报告,但是如果脚本是从命令行运行的,或者是通过命令行上启动的会话运行的,那么这应该被抑制

在RStudio中,如果我运行
interactive()
,结果是
TRUE
,如果我在终端打开一个R会话并运行相同的命令,结果也是
TRUE
,因此,我的问题本质上是,我如何区分?我正在运行MacOSX,但希望答案与mac、unix和windoze相关

干杯,

commandArgs()
将输出启动R会话的命令行,
.Platform$OS.type
将报告操作系统,因此:

switch(.Platform$OS.type,
  windows = if (grepl("Rterm", commandArgs())) cat("terminal\n") else cat("GUI\n"),
  ...fill in for each other operating system...
)

当您说“在终端上打开R会话”时,您是否打开终端并执行
R
R CMD BATCH
echo'interactive()”;R
表示
FALSE
,因此它工作正常。问题是,您真的想确定GUI是否正在运行,还是想确定R是否正在交互运行(在这种情况下,
interactive()
就足够了)?我执行的是
R
,而不是
R CMD BATCH
,因此,通过
R
打开的会话,或者通过可执行的R脚本
运行的会话/usr/bin/env Rscript
应返回
FALSE
,如果会话在类似RStudio的环境中运行,则应返回
TRUE