【发布时间】:2016-05-11 00:17:33
【问题描述】:
我正在编写一个 R 包,其中定义了一个函数,该函数实际上是 PHP 脚本的包装器。让我们假设 PHP 脚本提供了一些在 R 中很难重新创建的功能,并且我的推理(在 R 中包装 PHP 脚本)是有道理的。
我目前将 PHP 脚本保存在一个单独的文件中,并通过系统调用运行它。
我的 R 函数/包装器如下所示:
wrapper <- function() {
# I'm not entirely sure what the path to the PHP file should be
php_file_name <- "magic_in.php"
php_script_argument <- "hello, world"
system_call <- sprintf('php -f "%s"', php_file_name, php_script_argument)
system(system_call)
}
而magic_in.php 文件如下:
<?php
print($argv[1]."\n")
?>
但是这个解决方案很糟糕——只有当我的当前工作目录中有 PHP 脚本时,系统调用才有效。
我将包装器保存在 ~/simple_package/R/wrapper.R 文件中,但我不确定 PHP 脚本的存储位置。
我是否应该将 PHP 文件保存在 ~/simple_package/src 目录中,然后使用一些专用的 R 函数(例如 C 可执行文件的 .Call)调用它?
【问题讨论】:
-
确实这样更合适。
-
似乎
scripts目录(文件夹?)在 Windows 中不是持久的。但是exec(正如 hute37 在他的回答中所建议的那样)目录/文件夹是持久的。 -
我测试过,似乎不是,不是所有的二级目录都是持久的,即使它们不是空的。