我一直在使用makefile来自动运行Sweave,用于我在R中的分析报告,使用Jeromy Anglim概述的方法取得了巨大的成功.我最近听说过cacheSweave包,我想将该功能合并到我的Rnw文件中.我使用ProjectTemplate包在启动时加载所有必需的文件,这需要一些时间,因为我必须预处理原始数据文件.cacheSweave插图中的示例显示如何在R会话中使用cacheSweave驱动程序运行Sweave:
library(cacheSweave)
Sweave("foo.Rnw", driver = cacheSweaveDriver)
Run Code Online (Sandbox Code Playgroud)
如何在命令中使用cacheSweaveDriver以批处理模式运行Sweave?在我的makefile中,这是我调用Sweave的方式:
$(TEXFILE).tex: $(TEXFILE).Rnw
R CMD SWeave $(TEXFILE).Rnw
R CMD Stangle $(TEXFILE).Rnw
Run Code Online (Sandbox Code Playgroud)
我正在使用Emacs + ESS创建.Rnw文件并运行make.这是我的makefile的其余部分供参考:
TEXFILE=report_presentation
PLOTDIR= ../graphs
PLOTS=
FIGURES= $(PLOTDIR)/$(PLOTS)
INPUTS=
all: $(TEXFILE).pdf; make clean
.PHONY: all clean
$(TEXFILE).pdf: $(TEXFILE).tex $(FIGURES) $(INPUTS)
# Initial run
pdflatex $(TEXFILE)
# Run bibtex if missing citations
@if(grep "Citation" $(TEXFILE).log > /dev/null);\
then \
bibtex $(TEXFILE);\
pdflatex $(TEXFILE); \
fi
# Recompile if instructed
@if(grep "Rerun" $(TEXFILE).log > /dev/null);\
then \
pdflatex $(TEXFILE); \
fi …Run Code Online (Sandbox Code Playgroud) 我有一个数据框,我想从长格式到宽格式合并,但我希望将时间嵌入到宽格式的变量名称中.以下是长格式的示例数据集:
id <- as.numeric(rep(1,16))
time <- rep(c(5,10,15,20), 4)
varname <- c(rep("var1",4), rep("var2", 4), rep("var3", 4), rep("var4", 4))
value <- rnorm(16)
tmpdata <- as.data.frame(cbind(id, time, varname, value))
> tmpdata
id time varname value
1 5 var1 0.713888426169224
1 10 var1 1.71483653545922
1 15 var1 -1.51992072577836
1 20 var1 0.556992407683219
....
4 20 var4 1.03752019932467
Run Code Online (Sandbox Code Playgroud)
我想以宽泛的格式使用以下输出:
id var1.5 var1.10 var1.15 var1.20 ....
1 0.71 1.71 -1.51 0.55
(and so on)
Run Code Online (Sandbox Code Playgroud)
我尝试在基础R中使用reshape函数但没有成功,我不知道如何使用reshape包完成此操作,因为所有示例都将时间作为宽格式的另一个变量.有任何想法吗?
我已经切换到使用emacs-ess进行R代码开发,它运行良好.我希望能够编写一些我用于调试R脚本到临时缓冲区的小R代码,并能够在R进程缓冲区中执行临时缓冲区代码.我已经找到了如何通过将以下内容放在.emacs文件中来将临时缓冲区的模式更改为文本:
(setq initial-major-mode 'text-mode)
Run Code Online (Sandbox Code Playgroud)
是否有类似的声明我可以放在我的.emacs文件中,这会使暂存缓冲区具有ess-mode?我尝试了以下操作,导致错误类型参数出错:
(setq initial-major-mode 'ess-mode)
Run Code Online (Sandbox Code Playgroud)