1

更新:已解决 我发现了这个问题。

使用 .libPaths() 函数,我能够确定在通过 PHP 运行 Rscript 时,安装 HH 包的默认目录包含在库路径中,即使当 R 通过命令提示符。

我已经通过单独调用 .libPaths('new/file/path'); 解决了这个问题。在我动态创建的语法中。当我这样做时,测试 <-require('HH'); 测试; 返回真;

感谢所有帮助过的人。

我正在创建一个 PHP 脚本,它将在 R 中运行一些分析。此分析需要 hov.bf() 函数,它是HH包的一部分,但所有 R 输出(以及可能与 R 相关的进程) 从调用 hov.bf() 函数的行停止。如果我尝试通过 library('HH'); 加载 HH 库,则会出现相同的症状。令我困惑的是,通过(Ubuntu)命令提示符运行时,完全相同的 R 语法代码执行并输出所有打印语句(基本和 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 解决问题。

如果有人有任何想法,我将不胜感激。我已经没有什么想法了。

谢谢你。

4

1 回答 1

1

我发现了这个问题。

使用该.libPaths()函数,我能够确定安装 HH 包的默认目录在通过 PHP 运行 Rscript 时包含在库路径中,即使它在 R 通过命令提示符执行相同的代码时出现。

我已经通过.libPaths('new/file/path');在我的动态创建的语法中包含一个单独的调用来解决这个问题。当我这样做时,

test <-require('HH'); 
test; 
returns TRUE;

感谢所有帮助过的人。

于 2012-08-10T02:09:24.183 回答