我剛遇到一些令人困惑的東西(至少對我來說),並希望更聰明的成員可以擺脫一些光。創建文件名w sprintf在RStudio控制檯寬度太短時被截斷
我在Windows XP上使用RStudio 0.98.490來將繪圖保存爲PNG。文件名是使用strwrap(sprintf())
創建的。我習慣性地使用更長的(即更豐富的)文件名,我猜這次我可能過於熱情了,這就是爲什麼這個問題浮出水面。
我注意到,當RStudio控制檯的寬度是短於運行時文件名的長度的,後者被截斷,創建的文件沒有.png擴展名。我試驗並將RStudio控制檯的寬度拖到比文件名更長 - 問題消失。
我的問題:爲什麼會發生這種情況?更重要的是,我可以在不更改文件名的情況下解決這個截斷問題嗎?我是R的新手,我不明白爲什麼兩個看起來不相關的項目應該互動。如下圖所示
截斷:
> writeLines(paste0(FName, " generated")) # Write to Console
aaaaaa aaaaaaaaaaaaaabcdef ghijk lmnopqrstuvaaaaaa aaaaaaaaaaaaa213424534aaaaaa generated
aaaaaaaaaaaaa.png generated
>
示例代碼下面附:
astring <- "aaaaaa aaaaaaaaaaaaa"
FName <- strwrap(sprintf("%sabcdef ghijk lmnopqrstuv%s213424534%s.png",
astring, astring, astring)) # simulate long filename
png(filename = FName)
a <- rnorm(100)
b <- rnorm(100)*2
plot(b,a)
dev.off()
writeLines(paste0(FName, " generated")) # Write to Console
我發現的最接近的資源是https://stackoverflow.com/questions/6104448/preserving-long-comments-in-console-output-not-falling-victim-to-truncat但撰文人面臨的問題似乎略有不同。
如果有人能夠啓發,我將非常感激。謝謝!
編輯:感謝@jlhoward,我擡頭看strwrap()
,發現寬度參數。通過分配'255'(或任何大整數),問題就解決了。
您好@jlhoward,我使用'strwrap()',因爲我也習慣性地在我的_code本身中打破'sprintf'文本,以獲得更好的可讀性。假設我使用窄屏幕,我會將代碼分成兩行:'FName < - strwrap(sprintf(「%sabcdef ghijk'和'lmnopqrstuv%s213424534%s.png」,'。文件名會產生不必要的回車。有沒有更好的方法來解決這個問題,而不是'strwrap()'? – NoviceProg
好吧,'strwrap(...)'也插入了一個不需要的回車符,所以這不是一個解決方案,我想你可以使用'paste0(。 ..)',例如:'sprintf(paste0(「%sabcdef ghijk」,'和lmnopqrstuv%s213424534%s.png「),但真正的解決方案是避免這樣長的文件名。 – jlhoward
Point taken,@ jlhoward。謝謝! – NoviceProg