ベクトルを文字列に設定し、新しい名前でSweaveドキュメントをコピーして、そのSweaveを実行する関数があります。Sweaveドキュメント内で、関数で設定したベクトルを使用したいのですが、表示されていないようです。
(編集:Dirkによって提案されたようにtempdir(()を使用するようにこの関数を変更しました)
sweaveファイル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ベクトルを確認するにはどうすればよいですか?
ありがとう
ポール。