我经常遇到一个问题,我有一个数据框,它有一个x变量,一个或多个facet变量,以及多个不同的其他变量.有时我想同时将不同的y变量绘制为单独的行.但它始终只是我想要的一个子集.我已经尝试使用融合来获取"变量"作为列并使用它,如果我想要原始数据集中的每一列,它都可以工作.通常我没有.
现在我一直在做的事情真的很迂回感觉就像.假设使用mtcars我想对mpg绘制disp,hp和wt:
ggplot(mtcars, aes(x=mpg)) +
geom_line(aes(y=disp, color="disp")) +
geom_line(aes(y=hp, color="hp")) +
geom_line(aes(y=wt, color="wt"))
Run Code Online (Sandbox Code Playgroud)
这感觉真的很多余.如果我首先融化mtcars,那么所有变量都会融化,然后我将最终绘制出我不想要的其他变量.
有没有人有这样做的好方法?
我想在我的.Rprofile中添加以下内容:
# auto width adjustment
.adjustWidth <- function(...){
options(width=Sys.getenv("COLUMNS"))
TRUE
}
.adjustWidthCallBack <- addTaskCallback(.adjustWidth)
Run Code Online (Sandbox Code Playgroud)
这将动态调整R会话中的最大列,使其成为窗口的宽度.这适用于交互式会话,但在执行R CMD INSTALL或批处理会话时,我总是得到:
Error in options(width = Sys.getenv("COLUMNS")) :
invalid 'width' parameter, allowed 10...10000
Execution halted
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?我假设问题是Sys.getenv("COLUMNS")以某种方式失败了?是否有一些if()语句可以让我检测我是否批量运行?原来的自动宽度调整代码不是我的,我发现它在其他地方在线.