我希望有两行的情节标题,但这不起作用,为什么?我怎样才能让它发挥作用?
CVal<-1
SumEpsVal<-2
plot(1:10, main=bquote(paste("C=", .(CVal), " \n ", sum(xi), "=", .(SumEpsVal) )))
Run Code Online (Sandbox Code Playgroud)
这在这里工作:
plot(1:10, main=paste("C=1", "\n", "SumXi=2"))
Run Code Online (Sandbox Code Playgroud)
我猜bquote出错了...(查询?bquote)我试图改变bqoute(where-argument)中的环境,但我不知道要采取哪种环境.
BTW:
plot(1:10, main=bquote(paste("C=", .(CVal), "bla \n ", sum(xi), "=", .(SumEpsVal) )))
Run Code Online (Sandbox Code Playgroud)
用"bla"让事情变得疯狂.
假设我们有以下数据
set.seed(123)
dat <- data.frame(var1=c(10,35,13,19,15,20,19), id=c(1,1,2,2,2,3,4))
(sampledIDs <- sample(min(dat$id):max(dat$id), size=3, replace=TRUE))
> [1] 2 4 2
Run Code Online (Sandbox Code Playgroud)
samplingID是从中采样(替换)的id的向量dat$id
.我需要导致的代码(并且也适用于包含更多变量的大型数据集):
var1 id
13 2
19 2
15 2
19 4
13 2
19 2
15 2
Run Code Online (Sandbox Code Playgroud)
代码dat[which(dat$id%in%sampledIDs),]
不能给我我想要的东西,因为这段代码的结果是
var1 id
13 2
19 2
15 2
19 4
Run Code Online (Sandbox Code Playgroud)
主题dat$id==2
在此数据中只出现一次(我理解为什么这是结果,但不知道如何得到我想要的).有人可以帮忙吗?
编辑:谢谢你的答案,这里是所有答案的运行时间(对于那些感兴趣的人):
test replications elapsed relative user.self
3 dat[unlist(lapply(sampledIDs, function(x) which(x == dat$id))), ] 1000 0.67 1.000 0.64
1 dat[which(sapply(sampledIDs, "==", dat$id), arr.ind = TRUE)[, 1], ] 1000 0.67 …
Run Code Online (Sandbox Code Playgroud) 我正在寻找矩阵A = B'C的迹线(迹线(A))的R中的快速计算.我能想到的最快的方法如下:
set.seed(123)
n <- 10^6
B <- matrix(rnorm(n), ncol=sqrt(n))
C <- matrix(rnorm(n), ncol=sqrt(n))
ptm <- proc.time()
A <- tcrossprod(B,C)
traceA <- sum(diag(A))
proc.time() - ptm
Run Code Online (Sandbox Code Playgroud)
我问自己是否有更快的方法(特别是如果矩阵B和矩阵C是对称的,甚至是幂等的).我的意思是A <- tcrossprod(B,C)
我正在计算整个矩阵A的行,尽管我只需要矩阵的对角元素之和(trace(A)).
为了加快速度,我想到了并行计算tcrossprod
,但我没有找到一个实现(另外我不知道这是不是一个好主意).有人有想法吗?
我使用R代码:
dat<-data.frame(p1=c(0,1,1,0,0), GAMMA.1=c(1,2,3,4,3), VAR1=c(2,2,1,3,4), GAMMA.2=c(1,1,3,4,1))
form <- p1 ~ GAMMA.1:VAR1 + GAMMA.2:VAR1
mod <- glm(formula=form, data=dat, family=binomial)
(coef <- coefficients(mod))
# (Intercept) GAMMA.1:VAR1 VAR1:GAMMA.2
# 1.7974974 -0.2563667 -0.2181079
Run Code Online (Sandbox Code Playgroud)
coef
正如我们所看到的,交互的名称的GAMMA.2:VAR1
顺序与form
(我们VAR1:GAMMA.2
改为)的顺序不同。由于多种原因,我需要输出
# (Intercept) GAMMA.1:VAR1 GAMMA.2:VAR1
# 1.7974974 -0.2563667 -0.2181079
Run Code Online (Sandbox Code Playgroud)
之后无需更改系数的名称。具体来说,我希望系数的名称与我在form
对象中使用的名称相同(无需像上面的代码中那样进行切换)。我可以告诉glm()
不要切换交互的名称吗?
这有效:
plot(1:10, col=rgb(0,0,0,1))
rug(1:10, col=rgb(0,0,0,1))
Run Code Online (Sandbox Code Playgroud)
这不起作用(没有额外绘制地毯):
plot(1:10, col=rgb(0,0,0,0.9))
rug(1:10, col=rgb(0,0,0,0.9))
Run Code Online (Sandbox Code Playgroud)
为什么?我该如何解决这个问题?
我需要这个的原因是因为我想添加 alpha 颜色,以便重叠的“地毯”更暗。无法指定 alpha 颜色,我只能绘制这个:
plot(rep(1:10,100), rep(1:10,100), col=rgb(0,0,0,1))
rug(jitter(rep(1:10,100)), col=rgb(0,0,0,1))
Run Code Online (Sandbox Code Playgroud)