Запуск сценария R из PHP в VSCode, не распознающем пакеты R - PullRequest
1 голос
/ 02 февраля 2020

Я пытаюсь запустить скрипт R из PHP. Я создал выделенную версию своего кода, которая выдает то же сообщение об ошибке. Я работаю в VSCode, PHP Версия 7.3.9 и R-3.6.2. Ниже показаны версии нашего кода, демонстрирующие мою проблему.

index. php

<?php

$R = '"C:/Program Files/R/R-3.6.2/bin/Rscript.exe"';
$testScript = "C:/xampp/htdocs/rtest/testscript.r";

$command = "$R $testScript testingArguement 2>&1";

$result = shell_exec($command);

echo $result;

?>

testscript.r

## Define all libraries
suppressMessages(library(plyr))
suppressMessages(library(dplyr))
suppressMessages(library(tidyr))
suppressMessages(library(tidyselect))
suppressMessages(library(tidyverse))
suppressMessages(library(data.table))

## Suppress Warning Messages
options(warn=-1)

args = commandArgs(trailingOnly=TRUE)

testValue = args[1]

cat("The test value is",testValue)

Когда я запускаю команду через PHP в VSCode переменная результата получает следующее ...

"Error in library(plyr) : there is no package called 'plyr'
Calls: suppressMessages -> withCallingHandlers -> library
Execution halted
"

Однако, если я запускаю команду вручную в командной строке, она работает.

C:\Users\Garrett>"C:/Program Files/R/R-3.6.2/bin/Rscript.exe" C:/xampp/htdocs/rtest/testscript.r testingArguement 2>&1
The test value is testingArguement
C:\Users\Garrett>

Я просто запутался, почему пакеты не распознаются при запуске из VSCode / PHP

1 Ответ

1 голос
/ 02 февраля 2020

credit отправляется на Rscript: пакет не называется ...?

, но для подведения итогов я сделал следующее
1) Запустите R.exe в командной строке, и введите следующую команду, чтобы узнать, где установлены пакеты

Sys.getenv('R_LIBS_USER')

2) Вставьте следующую строку вверху скрипта R, чтобы Rscript.exe мог ссылаться на

.libPaths(c(.libPaths(),pathFromStepOne))
...