2010-08-18 64 views
1

使用R CMD Sweave我的.tex文件总是在我的HOME目录中生成。有没有可能改变这一点?我的意思是我可以用一个shell脚本的MV,但我想可以去看一些更好的把戏做如何更改R CMD Sweave的输出目录?

@Dirk: 我使用的是贴here和pdflatex没有找到该文件,因为它总是写剧本到我的用户的HOME目录。

回答

0

所以这里是我的工作...... R CMD Sweave没有参数,但仍然是一个解决方法。 使用basename和dirname帮了很多:)

#!/bin/bash 

myfile=$(/usr/bin/osascript << EOT 
tell app "AppleScript Runner" 
activate 
    return posix path of (choose file) 
    end 
    EOT) 

    if [ $? -eq 0 ] 
    then 
     echo $myfile 
     R CMD Sweave $myfile 
     no_ext=`basename $myfile .Rnw` 
     directory=`dirname $myfile` 
     mv ~/$no_ext.tex $directory/$no_ext.tex 
     /usr/local/texlive/2009/bin/universal-darwin/pdflatex -output-directory  $directory $no_ext.tex 
     open $directory/$no_ext.pdf 
     else 
      echo "User canceled" 
      fi 
+0

@Dirk,这很奇怪,因为在我的R代码中我从来没有使用HOME作为wd。 – 2010-08-18 15:12:16

+0

我第一次甚至能够使这个代码与platypus一起工作。 – 2010-08-18 15:15:53

0

咦?它总是在当前工作目录。因此,尝试

mkdir foo 
mv whatever.Rnw foo 
cd foo 
R CMD Sweave whatever.Rnw 

whatever.tex现在将~/foo,因为这是你)把源和b)调用的命令。

+0

只是编辑我的问题,指向链接中的脚本。脚本打开一个对话框,我可以选择.Rnw文件(Mac OSX)。 – 2010-08-18 14:01:14

+0

然后,您可能会遇到a)该脚本和/或您的路径出现问题,并且b)由于“R CMD Sweave”没有出错,这是一个特别恶劣的问题。 – 2010-08-18 14:03:03

+0

我不是怪'R CMD Sweave' :)。尽管如果有输出目录的参数,我可以使用它来代替文件。事实上,问题是$ myfile是从osascript返回的整个posix路径,我无法正确分割它。但我必须分手的唯一原因是因为我需要周围的事情(因为R CMD)。 – 2010-08-18 14:38:38