2013-07-22 26 views
3

我試圖寫一系列使用sprintf和水槽字符和數值:卸下[1]中的R水槽和sprintf輸出

sink("sample.txt", append=TRUE, split=TRUE) 
sprintf("Hello World") 
當然

,以上是一個例子,所以就不會上面沒有數據框的數值,但我需要使用sprintf。

文本文件(sample.txt的)的輸出是這樣的:

[1] Hello World 

如何刪除[1]從線?有沒有辦法讓[1]不會寫入文件?

回答

5

兩個選項映入腦海,使用cat()writeLines()

> cat(sprintf("Hello World"), "\n") 
Hello World 
> writeLines(sprintf("Hello World")) 
Hello World 

你的問題是,sprintf()返回一個特徵向量,就像任何其他的字符向量R打印它像一個載體,如果你print它。你想要的是包含在字符向量的第一個元素中的字符串(在這種情況下是唯一的)。因此我們使用工具來寫出字符串不打印字符向量。

注意,這兩種可直接寫經file參數(在cat())的文件或con參數(在writeLines()),這可能對你有用。

+0

感謝您的解釋!我用貓(),這很好。 – Sheila

+0

這可以在默認設置下改變(總是使用'cat',但沒有實際使用它)? –

+0

@RScriv我會寫一個封裝到'sprintf()'(比如說'wrapSprintf()'),它返回類c(「foo」,「character」)的字符向量,然後寫一個'print.foo )'調用'cat()'或'writeLines()'的方法。有了這兩個,你可以執行'wrapSprintf(「任何」),S3調度和自動打印將完成剩下的工作。這稍微濫用了'print'系統,但更符合一個工具做一件事 - 返回字符 - 和另一個工具來以特定方式顯示該字符向量。 –