我有数据,其中"飞行速度"是响应变量和group(实验/控制),test(第一/第二),FL(燃料负载,来自瘦体重的%:从0到~25%),wing(翼长度,mm) ).由于我们已经对同一只鸟进行了两次测试(第一次和第二次测试,实验组被感染),我想要执行混合模型(添加随机项~1|ring).由于异方差性,我还weight为test变量添加了参数.
mod<-lme(speed~test* group * FL * wing,weight=~1|test,random=~1|ring,data=data,method="ML")
Run Code Online (Sandbox Code Playgroud)
这就是完整模型的样子(我使用nlme包).之后我开始向后选择.我手动完成(根据最低的AIC),然后用函数stepAIC(MASS包)检查结果.在这种情况下,前两个选择步骤很好,但是当我从模型开始时:
mod3<-lme(speed~test+group + FL + wing+ test:group + group:FL + FL:wing + test:group:wing, weight=~1|test,random=~1|ring,data=data,method="ML")
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
Error in MEEM(object, conLin, control$niterEM) :
Singularity in backsolve at level 0, block 1
Run Code Online (Sandbox Code Playgroud)
据我所知,这意味着并非所有因素的相互作用都存在.但是我应该已经完整模型得到了同样的错误.而对于其他响应变量,它运作良好.如果你们有任何想法,我会很高兴的!
原始数据
ring group wing speed_aver FL test
1 XZ13125 E 75 0.62 16.2950000 first
2 XZ13125 E 75 0.22 12.5470149 second
3 XZ13126 E …Run Code Online (Sandbox Code Playgroud) 我想在R中生成具有指定均值的整数样本.我曾经mu+sd*scale(rnorm(n))生成一个n具有精确均值= 的值的样本,mu
但这会产生浮点值; 我想生成整数值.例如,我想生成一个mean = 4的样本.我的样本大小n= 5,生成值的示例为{2,6,4,3,5}.有关如何在R中执行此操作同时满足特定值的约束的任何想法?
假设我在R中有两个数字函数,例如,cos和exp.有一个新的函数对象f(x)= cos(x)*exp(x)的最快方法是什么?我可以将其定义为
f <- function(x) {cos(x)*exp(x) }
Run Code Online (Sandbox Code Playgroud)
但有没有这样做的简写方法(例如f = cos*exp)
在RI中创建了一个简单的一列矩阵,产生一个带有集合均值和给定标准差的数字列表.
rnorm2 <- function(n,mean,sd) { mean+sd*scale(rnorm(n)) }
r <- rnorm2(100,4,1)
Run Code Online (Sandbox Code Playgroud)
我现在想绘制这些数字与平均值的差异.我可以在Excel中执行此操作,如下所示:

但是我想用ggplot2Excel中的R形图来创建一个图形,我用线图来欺骗,但如果我能用列做这个就更好了.我尝试过使用散点图,但我无法弄清楚如何将其转换为与均值的偏差.
假设我有一个数字向量,我想要舍入到"更漂亮"的数字,例如:
vec <- c(1.739362e-08,8.782537e-08,0.5339712)
Run Code Online (Sandbox Code Playgroud)
我希望它是:
pretty.vec <- c(1.74e-08,8.78e-08,0.53)
Run Code Online (Sandbox Code Playgroud)
我如何实现这一目标?使用round并没有真正帮助,因为它将前两个元素舍入为0:
> round(vec,2)
[1] 0.00 0.00 0.53
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个公式来确定一个a最小化函数输出的值myfun(即a-fptotal).MWE:
c <- as.matrix(c(.25,.5,.25))
d <- as.matrix(c(10000,12500,15000))
e <- 700
f <- 1.1
tr <- .30
myfun <- function(a) {
b <- max(a-e,0)
df <- data.frame(u1=c(c*b*.40),u2=c(c*b*.60))
df$year <- 1:nrow(df)
df$factor <- 1/(f)^df$year
df$d <- d
df$t <- (df$d-df$u1-df$u2)*tr
df$f <- df$d-df$t
df$fp <- df$f*df$factor
fptotal <- sum(df$fp)
return(a-fptotal) # what is a good approach to minimize this?
}
Run Code Online (Sandbox Code Playgroud)
我尝试过这样的事情没有任何成功:
o2 <- optimize(myfun, lower = 0, upper = 30000)
Run Code Online (Sandbox Code Playgroud)
正确的答案应该是28355:
myfun(28355)
## [1] …Run Code Online (Sandbox Code Playgroud) 我试图使用R包leaps来运行所有可能的回归模型组合 - 所有可能的大小 - 在单个因变量和大于50个可能的预测变量上.每个变量是大约50个数值的向量.
这是我尝试过没有成功的:
vars <- c("var1", "var2", "var3", ... , "var60")
xs <- as.formula(paste("yvar ~ ", paste(vars, collapse="+")))
model1 <- regsubsets(x=xs, y=yvar, really.big=TRUE,
method="exhaustive", data=data)
summary(model1)
Run Code Online (Sandbox Code Playgroud)
我收到的错误是:
Warning message:
In leaps.setup(x, y, wt = wt, nbest = nbest, nvmax = nvmax, force.in = force.in,:
15 linear dependencies found
Run Code Online (Sandbox Code Playgroud) 我想对一个非常大的二进制矩阵的每一行进行向量的元素乘法。我的向量的长度等于我的矩阵的列数。我已经实现了使用 for 循环如下,但它非常慢。有谁知道加快速度的解决方案?
A <- c()
M # Binary matric
W <- matrix(0, nrow=nrow(M), ncol=ncol(M))
W <- data.frame(W)
for (i in 1:nrow(W)) {
W[i,] <- M[i,] * A
}
Run Code Online (Sandbox Code Playgroud) 我对R包学者有疑问
什么有效:
get_citation_history(SSalzberg)
Run Code Online (Sandbox Code Playgroud)
什么不:
get_article_cite_history(SSalzberg, "any article")
Run Code Online (Sandbox Code Playgroud)
代码:
article <- "Ultrafast and memory-efficient alignment of short DNA sequences to the human genome"
SSalzberg <- "sUVeH-4AAAAJ" (Google Scholar ID)
get_article_cite_history(SSalzberg, article)
Run Code Online (Sandbox Code Playgroud)
错误信息:
Error in min(years):max(years) : result would be too long a vector
In addition: Warning messages:
1: In min(years) : no non-missing arguments to min; returning Inf
2: In max(years) : no non-missing arguments to max; returning -Inf
Run Code Online (Sandbox Code Playgroud)
我不理解该函数上下文中的错误消息,我尝试了另一篇文章与另一位作者没有成功.我不知道我在这里失踪了什么....谢谢
我有以下工作代码(g++ 8.2,C++17 标准。)
queue<TreeNode*> q{};
q.push(root);
q.push(nullptr);
int sum = root -> val;
while (!q.empty()) {
TreeNode *n = q.front();
q.pop();
if (n != nullptr) {
sum += n->val;
if (n-> left != nullptr) q.push(n->left);
if (n-> right != nullptr) q.push(n->right);
} else {
if (q.empty()) break;
q.push(nullptr);
sum = 0;
}
}
return sum;
Run Code Online (Sandbox Code Playgroud)
然后我queue<TreeNode*>用deque<TreeNode*>. 事实证明,速度至少提高了 20%。为什么deque<TreeNode*>比 快这么多queue<TreeNode*>?
r ×9
function ×2
mean ×2
c++ ×1
deque ×1
ggplot2 ×1
mixed-models ×1
optimization ×1
queue ×1
random ×1
regression ×1
rounding ×1