更新:已解决我发现了这个问题。
使用 .libPaths() 函数,我能够确定在通过 PHP 运行 Rscript 时,安装到 HH 包的默认目录不包含在库路径中,即使它在 R 通过命令提示符执行相同的代码时出现。
我已经通过在动态创建的语法中包含对.libPaths('new/file/path')的单独调用来解决此问题。 当我这样做时,测试
感谢所有帮助过的人。
我正在创建一个PHP脚本,该脚本将在R中运行一些分析。 此分析需要 hov.bf() 函数,它是 HH 包的一部分,但所有 R 输出(以及可能与 R 关联的进程)都从调用 hov.bf() 函数的行停止。如果我尝试通过库('HH')加载 HH 库,也会出现同样的症状;让我感到困惑的是,完全相同的 R 语法代码在通过 (Ubuntu) 命令提示符运行时执行并输出所有打印语句(基本和 HH 函数)而不会出错。
代码概述:
PHP 创建 R 语法并写入文件 Rsyntax.txt。 以下某些行位于 R 语法文件中:
dir = '/var/www/someDirectory/';
setwd(dir);
sink('record.lis', append=FALSE, split=TRUE);
print('hello-1');
test <- hov.bf(Values,Grouping);
print('hello-2');
q();
生成语法文件后,PHP 将运行:
exec("/usr/bin/Rscript /var/www/someDirectory/Rsyntax.txt --no-save", $output);
当通过 PHP 运行时,输出文件将包含在调用 hov.bf() 之前创建的所有输出,但在此调用之后似乎没有任何内容运行。 也就是说,"hello-1"存在于输出文件中,但"hello-2"和 hov.bf() 调用下的所有其他输出不会写入该文件。 但是,当我将确切的命令从 PHP 的 exec() 复制并粘贴到 Ubuntu 的命令提示符时,它会毫无问题地运行所有 R 语法。 我也尝试设置.Rprofile 在加载 R 时默认加载 HH 包,但这并没有通过 PHP 解决问题。
如果有人有任何想法,我将不胜感激。 我已经对它可能是什么没有想法了。
谢谢。
我发现了这个问题。
使用 .libPaths()
函数,我能够确定在通过 PHP 运行 Rscript 时,安装到 HH 包的默认目录未包含在库路径中,即使它在 R 通过命令提示符执行相同的代码时出现。
我已经通过在动态创建的语法中包含对.libPaths('new/file/path');
的单独调用来解决此问题。 当我这样做时,
test <-require('HH');
test;
returns TRUE;
感谢所有帮助过的人。