更新:已解决 我发现了这个问题。
使用.libPaths()函数,我能够确定在通过PHP运行Rscript时,HH包安装到的默认目录是不包含在库路径中,即使它是当R通过命令提示符执行相同的代码时出现。
我通过单独调用.libPaths('new / file / path')解决了这个问题;在我动态创建的语法中。当我这样做时,测试< -require('HH');测试;返回TRUE;
感谢所有帮助过的人。
我正在创建一个将在R中运行一些分析的PHP脚本。这个分析需要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解决问题。
如果有人有任何想法,我将非常感谢他们。我已经没想到它可能是什么了。
谢谢。
答案 0 :(得分:1)
我发现了这个问题。
使用.libPaths()
函数,我能够确定在通过PHP运行Rscript时,HH包安装到的默认目录是不包含在库路径中,即使它当R通过命令提示符执行相同的代码时出现。
我已通过在动态创建的语法中单独调用.libPaths('new/file/path');
来解决此问题。当我这样做时,
test <-require('HH');
test;
returns TRUE;
感谢所有帮助过的人。