小编Rol*_*and的帖子

如何在ggplot2中一起使用coord_carteisan和coord_flip

我有一些奇怪的行为来自ggplot.这是一个MWE:

the_data <- data.frame(
   myx <- 1:10,
  lower <- rnorm(10,-5,1),
  mean <- rnorm(10,0,.5),
  upper <- rnorm(10,5,1))
the_data2 <- data.frame(
  myx <- 1:10,
  lower <- rnorm(10,-5,1),
  mean <- rnorm(10,0,.5),
  upper <- rnorm(10,5,1))
Run Code Online (Sandbox Code Playgroud)

现在,我想构建一个图,其中最终产品将具有平均值的点,以及从下部到uppper的线.但我希望这些线条是水平的.我还想在图表上"放大",以便只显示从-1到1的值.我需要使用,coord_cartesian因为如果我使用ylim它会丢弃图形外部的数据点,这会弄乱线条.但是当我跑步时:

ggplot() +
  geom_pointrange(aes(x=myx, y=mean, ymin=lower, ymax=upper), data=the_data) +
  geom_pointrange(aes(x=myx, y=mean, ymin=lower, ymax=upper), data=the_data2) +
  coord_cartesian(ylim = c(-1, 1)) +
  coord_flip() 
Run Code Online (Sandbox Code Playgroud)

它不应用"缩放"并切换两个参数:

ggplot() +
  geom_pointrange(aes(x=myx, y=mean, ymin=lower, ymax=upper), data=the_data) +
  geom_pointrange(aes(x=myx, y=mean, ymin=lower, ymax=upper), data=the_data2) +
  coord_flip() +
  coord_cartesian(ylim = c(-1, 1)) 
Run Code Online (Sandbox Code Playgroud)

应用缩放而不是翻转.这里发生了什么?

r ggplot2

14
推荐指数
2
解决办法
2167
查看次数

更改包的内部功能

一些背景:

我必须经常使用HMR包中HMR的函数.不幸的是,这个功能非常慢.(HMR本质上是一个拟合函数,它被设计为尽可能健壮,这是缺乏效率的一个原因.)函数HMR调用函数HMR::.HMR.fit1,它执行实际拟合.使用Rprof我知道关于效率的主要问题是使用lsfit,这被称为很多.因此,我修改了代码.HMR.fit1lsfit直接调用直接使用的C函数而没有所有开销lsfit,这应该导致显着的速度增益.

现在我想HMR::.HMR.fit1用我修改过的函数代替并测试HMR它是否给出了相同的结果以及我获得了多少速度.

我试着这样做:

mod.fun <- function(<many args>) {
 <a lot of code>
}
environment(mod.fun) <- environment(.HMR.fit1)
.HMR.fit1 <- mod.fun 
Run Code Online (Sandbox Code Playgroud)

但是,HMR::.HMR.fit1这样做不会改变,显然HMR::HMR不会使用我修改过的拟合函数.有没有办法实现我想要的,而无需从源代码构建软件包,由于我的(Windows)计算机上的用户权限限制,我无法做到这一点?

现在,我的解决方案是复制代码HMR::HMR,但我希望有一个更方便的解决方案.

packages r

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

使用表达式时在轴标签上的间距(粘贴(...))

请考虑以下示例:

plot(c(2,4,6)~c(1,2,3),xlab="x",
ylab=expression(paste('flux (g ',CO[2]~m^{-2}~h^{-1},')')))
Run Code Online (Sandbox Code Playgroud)

显然我想要"g"和"CO"之间的完整空间,但由于某种原因,我在图形标签中得到一个更小的空间(有些标签甚至为零).

问题更加明显,如果我这样做:

plot(c(2,4,6)~c(1,2,3),xlab="x",
ylab=expression(paste('flux (g C',O[2]~m^{-2}~h^{-1},')')))
Run Code Online (Sandbox Code Playgroud)

难道我做错了什么?有没有办法修复间距甚至更好的方法来创建带有大量子/上标和希腊字母的标签?

r axis-labels plotmath

11
推荐指数
1
解决办法
9037
查看次数

如何命名data.frame的未命名第一列

我有一个如下所示的数据框:

> mydf
                   val1     val2
hsa-let-7a         2.139890 -0.03477569
hsa-let-7b         2.102590  0.04108795
hsa-let-7c         2.061705  0.02375882
hsa-let-7d         1.938950 -0.04364545
hsa-let-7e         1.889000 -0.10575235
hsa-let-7f         2.264296  0.08465690
Run Code Online (Sandbox Code Playgroud)

请注意,从3列只有第2和第3列是名称.我想要做的是命名第一列(加上重命名第二和第三列).

但为什么这个命令失败了?

colnames(mydf) <- c("COL1","VAL1","VAL2");
Run Code Online (Sandbox Code Playgroud)

什么是正确的方法呢?

它给了我:

Error in `colnames<-`(`*tmp*`, value = c("COL1", "VAL1", "VAL2" :
  'names' attribute [3] must be the same length as the vector [2]
Run Code Online (Sandbox Code Playgroud)

r dataframe

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

突出显示规则和定义的语法

R有没有标准的语法高亮规则?如果是的话,他们在哪里可以找到?

或者每个编辑器,IDE,包(例如高亮包)是否创建了自己的规则集?

r syntax-highlighting

11
推荐指数
1
解决办法
1315
查看次数

readLines函数与新版本的R

我的功能是:

create_matrix <- function() {
  cat("Write the numbers of vertices: ")
  user_input <- readLines("stdin", n=1)
  user_input <- as.numeric(user_input)
  print(user_input)
  }
Run Code Online (Sandbox Code Playgroud)

对于版本3.5.0,在我输入数据后,程序不会继续执行.我直接从控制台调用脚本.

user-input r rscript readlines

11
推荐指数
1
解决办法
632
查看次数

计算2*2矩阵等级的最快方法?

计算R中矩阵等级的推荐方法似乎是qr:

X <- matrix(c(1, 2, 3, 4), ncol = 2, byrow=T)
Y <- matrix(c(1.0, 1, 1, 1), ncol = 2, byrow=T)
qr(X)$rank
[1] 2
qr(Y)$rank
[1] 1
Run Code Online (Sandbox Code Playgroud)

通过针对我的特定情况修改此函数,我能够提高效率:

qr2 <- function (x, tol = 1e-07) { 
  if (!is.double(x)) 
  storage.mode(x) <- "double"
  p <- as.integer(2)
  n <- as.integer(2)
  res <- .Fortran("dqrdc2", qr = x, n, n, p, as.double(tol),
                  rank = integer(1L), qraux = double(p), pivot = as.integer(1L:p), 
                  double(2 * p), PACKAGE = "base")[c(1, 6, 7, 8)]
  class(res) <- "qr" …
Run Code Online (Sandbox Code Playgroud)

performance r matrix rank

10
推荐指数
1
解决办法
711
查看次数

使用ggplot绘制时间序列中多个变量的平均值

我有一个文件,其中包含从a到k的多个变量的时间序列数据.

我想创建一个图表,绘制变量a到k随时间的平均值,并在该平均线的上方和下方添加一个平滑区域,表示每天的最大和最小变化.

所以像置信区间,但在平滑的版本.

这是数据集:https: //dl.dropbox.com/u/22681355/co.csv

这是我到目前为止的代码:

library(ggplot2)
library(reshape2)
meltdf <- melt(df,id="Year")
ggplot(meltdf,aes(x=Year,y=value,colour=variable,group=variable)) + geom_line()
Run Code Online (Sandbox Code Playgroud)

r ggplot2

10
推荐指数
1
解决办法
8869
查看次数

使用表达式标签时,请合并填充和颜色图例

我需要在图例标签中使用子/上标.但是,如果我使用label相应比例的参数,则颜色和填充比例不再组合.

有没有办法解决这个或不同的方式来使用传说中的子/上标?

DF <- data.frame(x=1:10,y=(1:10)^2,
                 ymax=(1:10)^2.2,
                 ymin=(1:10)^1.8,
                 fac=rep(c("a","b"),each=5))

library(ggplot2)
p <- ggplot(DF,aes(x=x,y=y,ymin=ymin,ymax=ymax,colour=fac,fill=fac)) +
  geom_line() +
  geom_ribbon(alpha=0.5)

print(p)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

p +  scale_color_discrete(labels=c("a"=expression(a[{foo}]),
                                   "b"=expression(b[{bar}]))) +
     scale_fill_discrete(labels=c("a"=expression(a[{foo}]),
                                  "b"=expression(b[{bar}]))) 
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

r ggplot2

9
推荐指数
1
解决办法
1410
查看次数

哪个版本的Android支持哪些包签名算法?

鉴于我想支持所有的设备,比如Froyo或更高版本,我可以使用哪种最安全的签名算法?我不需要将我的APK放在Android Market中.

我知道,例如,有些手机支持sha1withrsa但不支持sha256withrsa(Link).

android sha

8
推荐指数
1
解决办法
2882
查看次数