2015-10-03 96 views
1

我是R新手。所以如果問題對您來說似乎很簡單,請耐心等待。無法讀取R中執行的系統命令的輸出

我試圖從R.

randomGraphPoints<-function(exec="randomcoordinates") 
    { 
     command=paste("java -cp . ",exec) 
     system(command) 
    } 

執行Java程序的執行時上述功能randomGraphPoints示出了一個輸出,如下所示:

> source("Hello.R") 
> randomGraphPoints() 
(-12,7,-6,-7,10,-6,5,-8,-4,2,10,-12,-4,-13,-1,-15,12,12,1,8,-11,-13,-6,-3,6,-3,1,12,10,10,-8,15,-15,6,1,4,-13,-8,-6,2) 

我的計劃是創建一個矩陣,該矩陣由2列組成。輸出應該是這樣的:

-12,7 
-6,-7 
10,-6 
5,-8 
-4,2 
10,-12 
.... 
-6,2 

然後使用Graphviz繪製一個圖。

我被困在需要將R中的系統調用的輸出分配給R變量的階段。

請教我如何繼續。

TIA

回答

1

使用intern = TRUEsystem()得到適當的右輸出。然後你可以安全地分配reault。因此,嘗試函數的最後一行更改爲

system(command, intern = TRUE) 

那麼接下來的職能將是

randomGraphPoints <- function(exec = "randomcoordinates") { 
    command = paste("java -cp . ", exec) 
    system(command, intern = TRUE) 
} 

然後你就可以做

x <- randomGraphPoints() 
matrix(scan(text = x, sep = ","), ncol = 2, byrow = TRUE) 
+0

HI理查德,現在的代碼工作正常。但我有一個問題。輸出爲矩陣(x,2,byrow = TRUE) [,1] [1,]「12,-10,8,3,14,-1,14,3,-14,0,-7 ,-12,14,-3,3,-5,-15,-14,14,-11,-5,2,-15,15,4,0,0,-5,-3,-13, 0,8,5,4,-10,5,-5,-1,-4,13「 [2,]」12,-10,8,3,14,-1,14,3,-14 ,0,-7,-12,14,-3,3,-5,-15,-14,14,-11,-5,2,-15,15,4,0,0,-5, - 3,-13,0,8,5,4,-10,5,-5,-1,-4,13「'矩陣沒有形成。相反,它顯示了上面得到的整個輸出的兩行,在 – Dev

+0

@Dev - 對不起,請查看我更新的帖子。應該這樣做 –

+0

哇!非常感謝@Richard!奇蹟般有效 ! – Dev