2012-05-21 15 views
5

sé para ejecutar un script de shell en R está utilizando comandos del sistema:Cómo ejecutar el script de shell en R y obtener el resultado en la tabla?

my.table <- system(command,intern=TRUE) 

Sin embargo, si el resultado de mi "comando" es imprimir una mesa, y quiero R para leer la tabla directamente en su propia estructura de datos. (algo así como el marco de datos) ¿Hay alguna manera fácil de hacerlo? Porque la salida actual en "tabla" es una tabla de cadenas de caracteres. Lo que quiero es el objeto R como read.table().

+0

sospecho que tendrá que hacer un poco de análisis de texto a sí mismo. Algunas sugerencias no solicitadas: 1) La asignación '->' es técnicamente correcta, pero debe evitarse. 2) Publique preguntas reproducibles (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) ya que obtendrá mejores respuestas. En este caso, definitivamente querrá publicar algún resultado de muestra. –

+0

"La asignación -> es técnicamente correcta, pero debe evitarse" ¿Qué? – Hansi

Respuesta

4

Si la 'mesa' resultado tiene separadores de espacios en blanco y retornos de carro para marcar las líneas, entonces debería pasar los resultados al argumento 'texto' de read.table:

inp.tbl <- read.table(text = system(command,intern=TRUE)) 
+0

muchas gracias! ¡¡Soluciona mi problema !! – Pengyao

+0

(Una advertencia para los usuarios de versiones anteriores de R: el argumento 'text' para 'read.table' y sus derivados es una adición relativamente reciente.) –

4

espero usando pipe será más eficiente en la memoria y el tiempo de system con intern

inp.tbl <- read.table(pipe(command)) 
Cuestiones relacionadas