小编she*_*d03的帖子

如何通过make在批量Sweave调用中使用cacheSweave?

我一直在使用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)

r sweave

7
推荐指数
1
解决办法
765
查看次数

从长到宽重塑数据,在新的宽变量名称中使用时间

我有一个数据框,我想从长格式到宽格式合并,但我希望将时间嵌入到宽格式的变量名称中.以下是长格式的示例数据集:

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包完成此操作,因为所有示例都将时间作为宽格式的另一个变量.有任何想法吗?

r

5
推荐指数
1
解决办法
9304
查看次数

启用临时缓冲区以在emacs-ess中执行R代码

我已经切换到使用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)

emacs r ess

4
推荐指数
1
解决办法
788
查看次数

标签 统计

r ×3

emacs ×1

ess ×1

sweave ×1