我有一个将向量设置为字符串的函数,使用新名称复制 Sweave 文档,然后运行该 Sweave。在 Sweave 文档中,我想使用我在函数中设置的向量,但似乎看不到它。
(编辑:我将此函数更改为使用 Dirk 建议的 tempdir(() )
我创建了一个编织文件 test_sweave.rnw;
%
\documentclass[a4paper]{article}
\usepackage[OT1]{fontenc}
\usepackage{Sweave}
\begin{document}
\title{Test Sweave Document}
\author{gb02413}
\maketitle
<<>>=
ls()
Sys.time()
print(paste("The chosen study was ",chstud,sep=""))
@
\end{document}
我有这个功能;
onOK <- function(){
chstud<-"test"
message(paste("Chosen Study is ",chstud,sep=""))
newfile<-paste(chstud,"_report",sep="")
mypath<-paste(tempdir(),"\\",sep="")
setwd(mypath)
message(paste("Copying test_sweave.Rnw to ",paste(mypath,newfile,".Rnw",sep=""),sep=""))
file.copy("c:\\local\\test_sweave.Rnw",
paste(mypath,newfile,".Rnw",sep=""), overwrite=TRUE)
Sweave(paste(mypath,newfile,".Rnw",sep=""))
require(tools)
texi2dvi(file = paste(mypath,newfile,".tex",sep=""), pdf = TRUE)
}
如果我直接从函数运行代码,则生成的文件具有 ls(); 的输出。
> ls()
[1] "chstud" "mypath" "newfile" "onOK"
但是,如果我调用 onOK() 我会得到这个输出;
> ls()
[1] "onOK"
并且 print(...chstud...)) 函数会产生错误。
我怀疑这是一个环境问题,但我假设因为对 Sweave 的调用发生在 onOK 函数中,它会在相同的环境中,并且会看到函数中创建的所有对象。如何让 Sweave 进程查看 chstud 向量?
谢谢
保罗。