小编Dav*_*uer的帖子

将摘要信息添加到使用ggplot创建的密度图中

我有一个密度图,我想添加一些摘要信息,例如在中位数放置一条线并遮蔽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)

替代文字

statistics visualization r ggplot2

7
推荐指数
2
解决办法
1万
查看次数

将bash脚本合并到R包中?

背景

我正在编写R包以支持可重复的研究.此时,工作流主要由bash脚本组合在一起,我可以通过发送单个命令来运行分析./runscript.sh.我使用bash进行以下操作:

  1. 文件操作tar,rsync"重命名"
  2. 在本地和通过运行bash文件 ssh
  3. 使用R --vanilla它来运行R脚本依次调用R函数
  4. 使用查找和替换文件中的文本 sed
  5. 通过提交工作 qsub

在我看来,从R函数或R脚本执行整个工作流程会更有效(更清晰,更简单).我偏爱R,因为我对它更熟悉并且主要在emacs ESS中工作.

问题

  1. 使用systemfiles函数将所有这些bash的使用封装在R中是否值得?

  2. 还有其他我尚未找到的R套件会对此有帮助吗?

笔记

按照Al3xa的回答,我意识到重要的是要注意使用例如速度惩罚.R vs bash版本的tar和gsub在1000-2000文件上可能会小于工作流程中的当前限速步骤:JAGS(~10-20min)和FORTRAN(> 4hrs)的计算

bash workflow r

6
推荐指数
1
解决办法
504
查看次数

是否有R函数实现有限元方法?

是否存在可以使用有限元方法求解偏微分方程的R函数(Strang and Fix,1973)?

基于维基百科的有限元软件包列表,该方法已在Fortran,C中实现.Dortran和C都可以通过R函数调用,但我在CRAN中看不到任何此类函数.


Strang和Fix.有限元法分析.普伦蒂斯霍尔,1973年.

r finite-element-analysis

6
推荐指数
1
解决办法
3739
查看次数

索引R中的矩阵

这里是新手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)

indexing r matrix

6
推荐指数
1
解决办法
3193
查看次数

R的功能是否与系统有关?

我的同事希望确保我们在R中的工作与平台无关,特别是代码将在Linux,Mac和Windows上运行,并且在一个系统上创建的文件将在其他系统上运行.

由于此问题已经出现在我的小组中,我希望得到一个通用答案,这将使我更容易自信地向我的合作者保证不存在问题.例如,除了"因为(主题专家)在SO上说"之外,它将有助于提供参考.

  1. 通常,有没有办法知道R的任何特性是否是特定于平台的(我可以假设这将在函数的帮助中声明)吗?
  2. 是否有我相信平台无关的软件包或功能?
  3. 是否有类型的软件包或功能我应该警惕?

我之前曾问过两个关于R创建的文件的跨平台可读性的问题:与HDF5或netCDF相比,使用.Rdata文件有哪些缺点?为R对象使用`dump`可读跨平台甩?

interop operating-system r

6
推荐指数
1
解决办法
497
查看次数

如何让我的R会话香草?

这是对前一个问题进行澄清的后续工作,如何确保同一服务器上不同用户之间的R环境一致?

我想从R中进入一个"vanilla"R会话,例如类似于我使用命令启动R时所获得的会话R --vanilla.例如,我想编写一个不受特定用户自定义设置混淆的脚本.

特别是,我想要以下内容

  • 不读取R历史记录,配置文件或环境文件
  • 不会从以前的会话重新加载数据或对象

help("vanilla") 不返回任何内容,我对自定义设置的范围不熟悉,知道如何摆脱所有这些设置.

有没有办法进入新的香草环境?(?new.env似乎没有帮助)

environment r

6
推荐指数
2
解决办法
1万
查看次数

如何在服务器上完成qsub作业时自动运行bash脚本?

我想在发送到服务器的所有作业完成后运行脚本.

例如,我发送

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 bash cluster-computing qsub pbs

5
推荐指数
2
解决办法
9693
查看次数

在服务器上运行R时,如何从emacs ess启动x窗口?

我正在使用带有ssh.el包的emacs-snapshot,遵循ess手册中的说明.

有几种方法可以打开R会话,但这就是我这样做的方法:

  1. 打开emacs
  2. Cx Cf /server:dir/file.R这使我进入ESS [S]模式
  3. 输入'plot(1)'
  4. 抄送Cn来运行
  5. emacs要求启动目录,我选择/ server:dir /
  6. 我想要一个数字弹出,但它不会.

在shell或tramp模式下使用ess-remote时,这也不起作用,但如果我将起始目录设置为本地桌面,它确实有效.

任何建议都非常感谢.我目前的解决方法是将文件打印到pdf,然后在DocView模式下打开pdf,但这需要一些额外的步骤并且速度很慢.

x11 emacs r ess

5
推荐指数
1
解决办法
2077
查看次数

样条方法问题='monoH.FC''

我对使用单调样条感兴趣,但是当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)

r function spline

5
推荐指数
1
解决办法
970
查看次数

如何在同一台服务器上的不同用户之间确保一致的R环境?

我正在使用内部包"MyPKG"编写一个可重复分析的协议.每个用户都将提供自己的输入文件; 除输入外,分析应在相同条件下进行.(例如,我们可以推断出不同的结果是由不同的输入文件引起的).

MyPKG正在开发中,因此library(MyPKG)将加载用户在其本地库中编译的最后一个版本.它还将加载在本地库中找到的任何依赖项.

但我希望每个人都使用特定版本(MyPKG_3.14)进行此分析,同时仍允许开发更新版本.如果我理解正确,"R --vanilla"将为每个人加载相同的依赖项.

完成后,我们将工作环境保存为VM,以维持稳定的可重现环境.因此,临时(6个月)的解决方案就足够了.

我提出了两个可能的解决方案,但我不确定是否足够.

  1. 要求服务器管理员将MyPKG_3.14安装到默认的R路径中,然后在协议中提供以下代码:

    R --vanilla
    library(MyPKG)
    ....
    
    Run Code Online (Sandbox Code Playgroud)

    要么

  2. 在特定的库中编译MyPKG_3.14,例如lib.loc ="/ home/share/lib/R/MyPKG_3.14",然后提供

    R --vanilla
    library(MyPKG)
    
    Run Code Online (Sandbox Code Playgroud)

  • 这两种方法都足以确保每个人都运行相同的版本吗?
  • 一个比另一个好吗?
  • 是否还会出现其他不可预见的问题?
  • 是否有标准化多重分析的首选方案?
  • 我应该包括对输出的测试SessionInfo()吗?
  • 在服务器上创建一个帐户供每个人使用会更好吗?

environment r

5
推荐指数
1
解决办法
350
查看次数