Quanto è utile/interessante questa discussione:
Autore |
Discussione |
|
stefanken
Nuovo Arrivato
39 Messaggi |
Inserito il - 10 giugno 2010 : 09:19:28
|
Carissimi, come state? Io devo ammettere di essere stato meglio in passato... comunque: Ho bisogno di interfacciare R ai miei script perl. Ho trovato il modulo Statistics::R e dopo averlo installato (con qualche difficoltà: esiste un simpatico bug relativo alla opzione --gui=none) ho fatto uno scriptino di prova seguendo la descrizione trovata sull'apposita pagina di CPAN relativa al modulo. il mio script di prova è:
#!/usr/bin/perl
use strict;
use Statistics::R ; my $R = Statistics::R->new() ; $R->startR ; $R->send('x <- 123') ;
$R->send('x');
my $results=$R->read();
$R->stopR;
print "$results"; print "****\n"; exit;
ebbene, mi aspetterei di ottenere in output
123****
ma niente da fare, ottengo solo gli asterischi. La variabile $results rimane vuota.
Sapreste dirmi come mai? Saluti Stefano
|
|
|
kORdA
Utente Attivo
Prov.: Milano
Città: Monza
1303 Messaggi |
Inserito il - 10 giugno 2010 : 12:34:43
|
la funzione read legge lo standard out del terminale di R. D'altra parte i comandi inviati con send vengono interpretati come se lanciassi uno script, come se in R lanciassi una cosa tipo source(file='mioscript.R')
Visualizzare il contenuto di una variabile richiamandola è possibile solo con la shell interattiva. Per fare la stessa cosa con read dovresti passargli qualcosa del tipo $R->send('print(x)');
Ad essere sincero però diffido dall'usare la funzione read, perche' raccoglie tutto l'output senza soluzione di continuita'. Sarebbe piu' conveniente salvare i dati che ti interessano su un file (con i comandi R tipo 'write'), e fare un parsing da Perl in seconda battuta.
Un'ultima cosa importante su questo modulo. Con Statistics::R puoi lanciare piu' script contemporaneamente. In realta' si tratta di piu' istanze dello stesso processo di R, quindi non e' assolutamente equivalente a lanciare in Perl un fork su piu' oggetti di classe Statistics::R. |
http://www.linkedin.com/in/dariocorrada |
|
|
stefanken
Nuovo Arrivato
39 Messaggi |
Inserito il - 11 giugno 2010 : 19:37:05
|
caro/a korda, grazie molte per i tuoi commenti. L'utilizzo di R in modalità principalmente interattiva mi ha tratto in inganno. Vorrei commentare però in merito al tuo consiglio (che sicuramente centra il punto e risolve egregiamente il problema pratico): immagino che chi come me ha la necessità di utilizzare un modulo perl che costituisca un bridge tra perl ed R si aspetti una interazione di tipo bidirezionale. Almeno, io mi aspetto di dialogare con R direttamente da perl. Utilizzare il modulo "solo" per lanciare un comando e poi acquisire i risultati con un parsing di un output testuale mi sembra, come filosofia di utilizzo, un compromesso che mi lascia un po' perplesso. Insomma, se dovessi trovare solo un modo per lanciare uno script R potrei benissimo farlo scrivere al programma perl per poi lanciarlo con una chiamata di sistema ed in fine effettuare il parsing dell'output. Questo mi sembra onesto: perl e R si parlano attraverso files esterni e chiamate di sistema,ma certamente non sofisticato. Ma mi aspetterei da Statistics::R qualcosa di un po' più evoluto Saluti Stefano
|
|
|
|
Discussione |
|
|
|
Quanto è utile/interessante questa discussione:
MolecularLab.it |
© 2003-18 MolecularLab.it |
|
|
|