我刚遇到一些令人困惑的东西(至少对我来说),并希望更聪明的成员可以摆脱一些光。创建文件名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