我有一些奇怪的行为来自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)
应用缩放而不是翻转.这里发生了什么?
一些背景:
我必须经常使用HMR包中HMR的函数.不幸的是,这个功能非常慢.(HMR本质上是一个拟合函数,它被设计为尽可能健壮,这是缺乏效率的一个原因.)函数HMR调用函数HMR::.HMR.fit1,它执行实际拟合.使用Rprof我知道关于效率的主要问题是使用lsfit,这被称为很多.因此,我修改了代码.HMR.fit1来lsfit直接调用直接使用的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,但我希望有一个更方便的解决方案.
请考虑以下示例:
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)
难道我做错了什么?有没有办法修复间距甚至更好的方法来创建带有大量子/上标和希腊字母的标签?
我有一个如下所示的数据框:
> 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有没有标准的语法高亮规则?如果是的话,他们在哪里可以找到?
或者每个编辑器,IDE,包(例如高亮包)是否创建了自己的规则集?
我的功能是:
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,在我输入数据后,程序不会继续执行.我直接从控制台调用脚本.
计算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) 我有一个文件,其中包含从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) 我需要在图例标签中使用子/上标.但是,如果我使用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)

鉴于我想支持所有的设备,比如Froyo或更高版本,我可以使用哪种最安全的签名算法?我不需要将我的APK放在Android Market中.
我知道,例如,有些手机支持sha1withrsa但不支持sha256withrsa(Link).
r ×9
ggplot2 ×3
android ×1
axis-labels ×1
dataframe ×1
matrix ×1
packages ×1
performance ×1
plotmath ×1
rank ×1
readlines ×1
rscript ×1
sha ×1
user-input ×1