我有一个密度图,我想添加一些摘要信息,例如在中位数放置一条线并遮蔽90%可信区间(第5和第95分位数).有没有办法在ggplot中这样做?
这是我想总结的情节类型:
我可以弄清楚如何从y = 0到y =密度(中位数(x))绘制一条线,但是我不清楚我是否可以使用90%CI对阴影进行着色.或者,我可以在密度图上方添加一个水平箱图,但不清楚如何自动旋转箱图,而不用随之旋转密度图.
x <- as.vector(rnorm(10000))
d <- as.data.frame(x=x)
library(ggplot2)
ggplot(data = d) + theme_bw() +
geom_density(aes(x=x, y = ..density..), color = 'black')
Run Code Online (Sandbox Code Playgroud)

我正在编写R包以支持可重复的研究.此时,工作流主要由bash脚本组合在一起,我可以通过发送单个命令来运行分析./runscript.sh.我使用bash进行以下操作:
tar,rsync"重命名"sshR --vanilla它来运行R脚本依次调用R函数sed qsub在我看来,从R函数或R脚本执行整个工作流程会更有效(更清晰,更简单).我偏爱R,因为我对它更熟悉并且主要在emacs ESS中工作.
使用system和files函数将所有这些bash的使用封装在R中是否值得?
还有其他我尚未找到的R套件会对此有帮助吗?
按照Al3xa的回答,我意识到重要的是要注意使用例如速度惩罚.R vs bash版本的tar和gsub在1000-2000文件上可能会小于工作流程中的当前限速步骤:JAGS(~10-20min)和FORTRAN(> 4hrs)的计算
这里是新手R用户.所以我有一个数据集格式如下:
Date Temp Month
1-Jan-90 10.56 1
2-Jan-90 11.11 1
3-Jan-90 10.56 1
4-Jan-90 -1.67 1
5-Jan-90 0.56 1
6-Jan-90 10.56 1
7-Jan-90 12.78 1
8-Jan-90 -1.11 1
9-Jan-90 4.44 1
10-Jan-90 10.00 1
Run Code Online (Sandbox Code Playgroud)
在R语法中:
datacl <- structure(list(Date = structure(1:10, .Label = c("1990/01/01",
"1990/01/02", "1990/01/03", "1990/01/04", "1990/01/05", "1990/01/06",
"1990/01/07", "1990/01/08", "1990/01/09", "1990/01/10"), class = "factor"),
Temp = c(10.56, 11.11, 10.56, -1.67, 0.56, 10.56, 12.78,
-1.11, 4.44, 10), Month = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L)), .Names …Run Code Online (Sandbox Code Playgroud) 我的同事希望确保我们在R中的工作与平台无关,特别是代码将在Linux,Mac和Windows上运行,并且在一个系统上创建的文件将在其他系统上运行.
由于此问题已经出现在我的小组中,我希望得到一个通用答案,这将使我更容易自信地向我的合作者保证不存在问题.例如,除了"因为(主题专家)在SO上说"之外,它将有助于提供参考.
我之前曾问过两个关于R创建的文件的跨平台可读性的问题:与HDF5或netCDF相比,使用.Rdata文件有哪些缺点?并为R对象使用`dump`可读跨平台甩?
这是对前一个问题进行澄清的后续工作,如何确保同一服务器上不同用户之间的R环境一致?
我想从R中进入一个"vanilla"R会话,例如类似于我使用命令启动R时所获得的会话R --vanilla.例如,我想编写一个不受特定用户自定义设置混淆的脚本.
特别是,我想要以下内容
help("vanilla") 不返回任何内容,我对自定义设置的范围不熟悉,知道如何摆脱所有这些设置.
有没有办法进入新的香草环境?(?new.env似乎没有帮助)
我想在发送到服务器的所有作业完成后运行脚本.
例如,我发送
ssh server "for i in config*; do qsub ./run 1 $i; done"
Run Code Online (Sandbox Code Playgroud)
然后我找回已启动的工作列表.我希望在服务器上自动启动另一个脚本,以便在完成所有这些作业后处理这些作业的输出.
我将不胜感激任何有助于我避免以下优雅解决方案的建议:
如果我将上述调用中的1000个作业ID中的每一个保存在一个单独的文件中,我可以根据当前正在运行的作业列表检查每个文件的内容,即从调用输出到:
ssh qstat
Run Code Online (Sandbox Code Playgroud)
我只需每半小时检查一次,但我想有更好的方法.
我正在使用带有ssh.el包的emacs-snapshot,遵循ess手册中的说明.
有几种方法可以打开R会话,但这就是我这样做的方法:
在shell或tramp模式下使用ess-remote时,这也不起作用,但如果我将起始目录设置为本地桌面,它确实有效.
任何建议都非常感谢.我目前的解决方法是将文件打印到pdf,然后在DocView模式下打开pdf,但这需要一些额外的步骤并且速度很慢.
我对使用单调样条感兴趣,但是当R尝试使用它时我收到错误.我使用的是R 2.12.0,方法'monoH.FC'表示自2.8.0以来它一直受支持
可重复的示例(更复杂的(x,y)关系的相同结果)
x<-1:2
y<-1:2
spline(x,y,method="monoH.FC")
Error in spline(x, y, method = "monoH.FC") : invalid interpolation method
Run Code Online (Sandbox Code Playgroud)
我试过了什么
?spline 收益:
...
Usage:
...
spline(x, y = NULL, n = 3*length(x), method = "fmm",
xmin = min(x), xmax = max(x), xout, ties = mean)
...
Arguments:
method: specifies the type of spline to be used. Possible values are
‘"fmm"’, ‘"natural"’, ‘"periodic"’ and ‘"monoH.FC"’.
...
Run Code Online (Sandbox Code Playgroud)
但spline函数本身表明不支持'monoH.FC'方法:
...
method <- pmatch(method, c("periodic", "natural", "fmm"))
if (is.na(method))
stop("invalid interpolation method")
... …Run Code Online (Sandbox Code Playgroud) 我正在使用内部包"MyPKG"编写一个可重复分析的协议.每个用户都将提供自己的输入文件; 除输入外,分析应在相同条件下进行.(例如,我们可以推断出不同的结果是由不同的输入文件引起的).
MyPKG正在开发中,因此library(MyPKG)将加载用户在其本地库中编译的最后一个版本.它还将加载在本地库中找到的任何依赖项.
但我希望每个人都使用特定版本(MyPKG_3.14)进行此分析,同时仍允许开发更新版本.如果我理解正确,"R --vanilla"将为每个人加载相同的依赖项.
完成后,我们将工作环境保存为VM,以维持稳定的可重现环境.因此,临时(6个月)的解决方案就足够了.
我提出了两个可能的解决方案,但我不确定是否足够.
要求服务器管理员将MyPKG_3.14安装到默认的R路径中,然后在协议中提供以下代码:
R --vanilla
library(MyPKG)
....
Run Code Online (Sandbox Code Playgroud)
要么
在特定的库中编译MyPKG_3.14,例如lib.loc ="/ home/share/lib/R/MyPKG_3.14",然后提供
R --vanilla
library(MyPKG)
Run Code Online (Sandbox Code Playgroud)SessionInfo()吗?