2016-05-30 53 views
0

我一直在嘗試在R中使用xmstarlet,而不是在bash中運行我的xmlstarlet腳本,然後將它管到R,但是我嘗試過的所有內容都無法工作。我甚至不確定這是否可能。XMLstarlet和R

我已經試過這樣:

shell(cmd=(xmlstarlet sel -t -c "someinput"), intern=TRUE) 

獨自在bash的作品,但是當我嘗試這樣做,我得到這個錯誤的命令:

Error: unexpected symbol in "shell(cmd=(xmlstarlet sel" 

我的不是真的,如果確定我應該使用system()而不是shell。我也用的系統,但沒有成功

編輯:

完整的命令例子,也可以發現here全xml文件

xmlstarlet sel -t -m "/bookstore/book/Description" -i "@stock='YES'" -v '/bookstore/book/Location/shelf' 
+0

是否'CMD < - 「xmlstarlet SEL -t -c 'someinput'」'然後'殼(CMD = CMD ,intern = TRUE)'工作? –

+0

剛剛嘗試過。不,它不是 – MLMH

+0

'cmd'應該是一個字符串。你有一個「一些輸入」實際上是實際輸入的例子嗎?錯誤清楚地告訴你檢查'cmd'參數。 –

回答

1

保存您的命令作爲特徵向量,並使用system

cmd <- "xml el http://stackoverflow.com" 
system(command = cmd, intern = T) 

這給了我

http://stackoverflow.com:12.163: EntityRef: expecting ';' 
/cdn.sstatic.net/Sites/stackoverflow/img/[email protected]?v=73d79a89bded&a 
                      ^
[1] "html"       "html/head"      "html/head/title"    
[4] "html/head/link"    "html/head/link/link"   "html/head/link/link/link"  
[7] "html/head/link/link/link/meta" 
attr(,"status") 
[1] 4 

如果您在xmlstarlet命令中使用雙引號,則必須使用反斜槓將它們轉義。 使用您添加到問題的例子:

cmd <- "xmlstarlet sel -t -m \"bookstore/book\" -i \"Description/stock='YES'\" -v \"Location/shelf\" -n /PATH/TO/books.xml" 
system(command = cmd, intern=T) 

輸出:

[1] "30" "21" "11"