我正在运行一个Docker容器,主要是作为该R语言的独立开发环境.(R这里的用法与帖子的其余部分正交,即你可以假设任何可以在repl-session中运行的通用程序.)很多时候这将涉及做绘图,制作图形等内容; 我需要看看这些.因此,我更愿意选择显示我在容器中创建的图形.到目前为止,我是这样做的.首先我创建一个Dockerfile.省略最重要的步骤是:
# Set root passwd
RUN echo "root:test" | chpasswd
# Add user so that container does not run as root
RUN useradd -m docker
RUN echo "docker:test" | chpasswd
RUN usermod -s /bin/bash docker
RUN usermod -aG sudo docker
ENV HOME /home/docker
RUN mkdir /var/run/sshd
RUN mkdir -p /var/log/supervisor
# copy servisord.conf which lists the processes to be spawned once this
# container is started (currently only one: sshd)
COPY …Run Code Online (Sandbox Code Playgroud) 下面的两个代码示例都在链接列表的顶部添加了一个节点.但是,第一个代码示例使用双指针,而第二个代码示例使用单个指针
代码示例1:
struct node* push(struct node **head, int data)
{
struct node* newnode = malloc(sizeof(struct node));
newnode->data = data;
newnode->next = *head;
return newnode;
}
push(&head,1);
Run Code Online (Sandbox Code Playgroud)
代码示例2:
struct node* push(struct node *head, int data)
{
struct node* newnode = malloc(sizeof(struct node));
newnode->data = data;
newnode->next = head;
return newnode;
}
push(head,1)
Run Code Online (Sandbox Code Playgroud)
两种策略都有效.但是,许多使用链表的程序使用双指针来添加新节点.我知道双指针是什么.但是如果单个指针足以添加新节点,为什么很多实现都依赖于双指针?
有没有一个指针不起作用的情况所以我们需要去一个双指针?
我使用C#来自动化excel文件.我能够获得它包含的工作簿和工作表.例如,我在sheet1中有两个cols和5行.我希望o获得被占用单元格的范围为A1:B5.我尝试了以下代码,但没有给出正确的结果.列#和行#更大,单元格也是空的.
Excel.Range xlRange = excelWorksheet.UsedRange;
int col = xlRange.Columns.Count;
int row = xlRange.Rows.Count;
Run Code Online (Sandbox Code Playgroud)
有没有其他方法可以用来获得该范围?
给定一个路径,比如/ home/shree/path/def,我想确定def是目录还是文件.有没有办法在C或C++代码中实现这一点?
我想做一些模拟,ACT-R我需要一个Common Lisp实现.我有三种Common Lisp可用的实现:(1) CLISP [1],(2) ECL [1]和(3) SBCL [1].正如您可能从链接中收集的那样,我已经在维基百科上阅读了所有这三个链接.但我想要一些有经验的用户的意见.更具体地说,我想知道:
(i) 这三种实现之间的主要区别是什么(例如:它们最擅长的是什么?它们中的任何一种仅用于特定目的,因此可能不适用于特定任务吗?)?
(ii)基于我将使用的事实ACT-R还是基于一般原因,是否有明显的选择?
由于这可以解释为一个主观问题我检查了我在这里可以问什么主题以及我应该避免询问哪些类型的问题?如果我读得正确,它不应该被视为禁果.
我需要容器中的大*.zip文件(5 gb)的内容Docker才能编译程序.该*.zip文件驻留在我的本地计算机上.对此的策略是:
COPY program.zip /tmp/
RUN cd /tmp \
&& unzip program.zip \
&& make
Run Code Online (Sandbox Code Playgroud)
完成此操作后,我想删除解压缩的目录和原始*.zip文件,因为它们不再需要了.问题是COPY(以及ADD指令)将向图像添加一个图层,该图层将包含program.zip有问题的文件,因为图像可能至少大5gb.有没有办法在不使用COPY或ADD指令的情况下将文件添加到容器中?wget将无法正常工作,因为上述*.zip文件位于我的本地计算机上,curl file://localhost/home/user/program.zip -o /tmp/program.zip也无法正常工作.
这基本上是对这个更专业化问题的跟进.在进行并行计算时,有一些关于创建僵尸进程的帖子R:
有几种方法可以进行并行计算,我将重点介绍目前在本地计算机上使用的三种方法.我在带有内核的本地计算机上使用doMC和doParallel使用foreach包4:
(a)注册一个fork集群:
library(doParallel)
cl <- makeForkCluster(4)
# equivalently here: cl <- makeForkCluster(nnodes=getOption("mc.cores", 4L))
registerDoParallel(cl)
out <- foreach(i=1:1000, .combine = "c") %dopar% {
print(i)
}
stopCluster(cl)
Run Code Online (Sandbox Code Playgroud)
(b)注册PSOCK集群:
library(doParallel)
cl <- makePSOCKcluster(4)
registerDoParallel(cl)
out <- foreach(i=1:1000, .combine = "c") %dopar% {
print(i)
}
stopCluster(cl)
Run Code Online (Sandbox Code Playgroud)
(c)使用 doMC
library(doMC)
library(doParallel)
registerDoMC(4)
out <- foreach(i=1:1000, .combine = "c") %dopar% {
print(i)
}
Run Code Online (Sandbox Code Playgroud)
有几个用户观察到在使用该doMC方法时 - 这只是mclapply函数的包装器,所以它不是 …
这是一个非常基本的问题,但我没有找到明确的答案.我试着理解字符串文字是如何C工作的.
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char *str = "Hello World!";
str = "Reassign str.";
char *str2 = "Something.";
str = strdup(str2);
free(str);
exit(EXIT_SUCCESS);
}
Run Code Online (Sandbox Code Playgroud)
当我str = "Reassign str."或str = strdup(str2)字符串文字字符串发生什么Hello World?它是可执行文件的一部分,是否超出范围,重新分配后是否释放了内存str?
我目前正在测试是否应该在我的lmer模型中包含某些随机效果.我使用anova函数.我的过程,到目前为止是一个函数调用模型适合lmer()用REML=TRUE(默认选项).然后我打电话anova()给两个模型,其中一个确实包括要测试的随机效果,另一个没有.但是,众所周知,该anova()函数使用ML重新生成模型,但在新版本中,anova()您可以anova()通过设置选项来防止这样做refit=FALSE.为了测试随机效应refit=FALSE,我应该在我的调用中设置anova() or not?(如果我设置refit=FALSEp值往往更低.当我设置时,p值是反保守的refit=FALSE吗?)
方法1:
mod0_reml <- lmer(x ~ y + z + (1 | w), data=dat)
mod1_reml <- lmer(x ~ y + z + (y | w), data=dat)
anova(mod0_reml, mod1_reml)
Run Code Online (Sandbox Code Playgroud)
这将导致anova()使用ML而不是改装模型REML.(该anova()函数的较新版本也将输出有关此信息.)
方法2:
mod0_reml <- lmer(x ~ y + z + (1 | w), data=dat)
mod1_reml <- lmer(x ~ y + …Run Code Online (Sandbox Code Playgroud) 我从包中装了一个R带有lmer()-function 的模型lme4.我缩放了因变量:
mod <- lmer(scale(Y)
~ X
+ (X | Z),
data = df,
REML = FALSE)
Run Code Online (Sandbox Code Playgroud)
我看一下固定效应系数fixef(mod):
> fixef(mod)
(Intercept) X1 X2 X3 X4
0.08577525 -0.16450047 -0.15040043 -0.25380073 0.02350007
Run Code Online (Sandbox Code Playgroud)
从固定效应系数手动计算平均值非常容易.但是,我希望它们不被缩放,我不确定如何完全这样做.我知道缩放意味着减去每个平均值Y并且偏离标准偏差.但是,平均值和标准偏差都是从原始数据计算出来的.在lmer()使用原始数据的均值和标准偏差拟合-model 后,我可以简单地反转此过程吗?
谢谢你的帮助!
更新:我提出上述模型的方式似乎意味着通过取所有响应的均值并除以所有响应的标准差来缩放因变量.通常,它的完成方式不同.不是采用总体平均值和标准偏差,而是通过使用该受试者的反应的平均值和标准偏差来对每个受试者标准化响应.(这是奇怪的,lmer()我认为随机拦截应该照顾...更不用说我们正在谈论按顺序计算方法的事实......)然而问题保持不变:一旦我适合这样一个模型,是否有一种干净的方法来重新调整拟合模型的系数?