2013-10-16 68 views
8

我知道你可以使用「\」來轉義特殊字符,但是我很有趣的是創建包含特殊字符的終端命令,而且這些命令不能很好地讀取反斜槓。是否有R等價於其他語言的三重引號?

作爲一個簡單的例子,我想有一個看起來如下命令:

echo hello "w" or'l'd 

這可以通過類似

system(command="""echo hello "w" or'l'd""") 

但R不處理三重引號可以實現。有另一種方法嗎?即使從cat()捕獲輸出也沒關係。例如newCommand = cat(「echo hello \」w \「orld」)

謝謝。

+0

哦,通過添加一個單引號字符串你使它變得更硬,無效@ flodel的回答(這是你的問題的最初版本是正確的)... –

+0

它不僅僅是用反斜槓更難(正如下面指出的那樣,實際上並不包含在字符串內部,只是在R的打印表示中,因此可能不像你認爲的那樣有問題),而是「deparse(替代('echo hello」w「或'l'd'))''... –

回答

7

您可以\"逃脫"。如果您的目的是運行系統命令,我也會使用shQuote。它負責將相關逃脫你的...

shQuote("hello \"w\" orld" , type = "cmd") 
#[1] "\"hello \\\"w\\\" orld\"" 

你應該知道,你在屏幕上在R解釋看不正是外殼會看到..例如

paste0("echo " , shQuote("hello \"w\" orld" , type = "sh")) 
#[1] "echo 'hello \"w\" orld'" 

system(paste0("echo " , shQuote("hello \"w\" orld" , type = "sh"))) 
#hello "w" orld 
+1

我認爲要使用'shQuote'你必須做:'system(command = paste0(「echo」,shQuote(「hello \」w \「orld 「,type =」cmd「)))'。如果我理解正確,'shQuote'用於傳遞給一個命令的字符串,本身沒有命令。 – juba

+0

@juba謝謝,你是絕對正確的。我更新了這個效果。乾杯 –

3

您可以使用單引號:

system(command='echo hello "w" orld') 
相關問題