2010-01-06 3 views
2

Есть ли у кого-нибудь предложения по хорошему способу позвонить R из S-Plus? В идеале я хотел бы просто передать код R и вернуть данные без необходимости писать слишком сложные для их интеграции.Вызов R из S-Plus?

Я должен добавить, что я знаком с пакетом RinS на Omegahat, но я не использовал его. У меня создалось впечатление, что Insightful предпринял попытку интегрировать окружающую среду до того, как Tibco взяла верх.

Редактировать: Получается, что RinS не работает в Windows. Я обнаружил, что самым простым решением было просто использовать Rscript. Я могу назвать это из S-Plus командой system(). Например, вот простой скрипт:

#! Rscript --vanilla --default-packages=utils 
args <- commandArgs(TRUE) 
print(args) 
print(1:100) 
Sys.sleep(2) 
res <- "hello world" 
class(res) <- "try-error" 
if(inherits(res, "try-error")) q(status=1) else q() 

И назвав его от S-Plus:

system("rscript c://test.rscript 'some text'") 

Тогда я просто сохранить результаты в текстовый файл и импортировать его в S-Plus после сценария запускается.

+1

Что такое S-Plus? Извините, не смог устоять ... –

+0

Ouch ... :) Это R для чайников. – Shane

ответ

5

RSPlus - единственный вариант, о котором я знаю. Я использовал его почти ежедневно около года, но не использовал его с R 2.7. Из вашего Q кажется, что вы просто хотите запустить R внутри SPlus, что, безусловно, может сделать RSPlus (R - отдельный интерпретатор, доступный через интерфейс, состоящий из нескольких функций SPlus, наиболее часто используемым является «.R()» например, .R («fivenum», 1:10).

Я думаю, что мы говорим об одном и том же, потому что «RinS» является одним из двух модулей (SpinR - это другой), которые вместе включают RSPlus (т. е. существует только один интерфейс, независимо от того, в каком направлении вы хотите идти - от R до SPlus или от SPllus до R). Хотя в то время это было не очевидно для меня, мне пришлось установить оба модуля, чтобы получить RinS