【问题标题】:R Batch mode - Can't execute scriptR批处理模式 - 无法执行脚本
【发布时间】:2015-07-15 01:41:43
【问题描述】:

为了以非交互方式运行 R,我决定使用批处理(使用 Windows 7)。 我输入的命令提示符(CMD)

cd c:\Program Files\R\R-3.1.3\bin\x64 #set directory
"c:\Program Files\R\R-3.1.3\bin\x64\R.exe" CMD BATCH "c:\Program Files\R\R-3.1.3\bin\myscript.R" "c:\Program Files\R\R-3.1.3\bin\output.out"

输出已生成。我打开了 output.out 文件,可以看到以下错误消息:

> myData1<-read.csv("myData.csv",header=T, sep=";", dec=",")
> temp<-read.csv("Temperature.csv",header=T, sep=";", dec=",")
Error in file(file, "rt") : cannot open the connection
Calls: read.csv -> read.table -> file
In addition: Warning message:
In file(file, "rt") :
  cannot open file 'Temperature.csv': No such file or directory
Execution halted

在 myscript.R 文件中,我已经将工作目录设置为文件(myData.csv 和 Temperature.csv)所在的位置。当我在 Rstudio 中执行 myscript.R 的内容时,一切正常。不知何故,这个错误不断出现,我完全一无所知。有什么建议吗?

【问题讨论】:

    标签: r csv batch-processing


    【解决方案1】:

    在您的示例中,您尝试在 cd c:\Program Files\R\R-3.1.3\bin\x64 中查找 csv 文件。

    你需要在myData.csv所在的目录下执行R.exe或者更好的Rscript.exe

    R exe 目录是一回事。
    R 脚本目录是另一个。 csv 目录是另一个。

    使用绝对路径或...
    考虑到您的 R 脚本与 csv 文件位于同一目录中,您可以使用以下类型:

    CD /path_to_R_script/
    path_to_exe/exe script
    

    所以你从你有 csv 文件的目录运行 exe。

    在 linux 中它可能看起来像:

    cd /my/path && Rscript myscript.R
    

    【讨论】:

    • 你先生应该得到一块饼干。我按照您的建议将目录更改为文件所在的位置。代码的另一部分仍然是正确的。
    【解决方案2】:

    引用 Michael Lundholm 的 pdf Working with R in batch mode: Some notes for beginners

    虽然安装了R,但是windows系统没有找到文件 R.exe。这是因为该文件位于不在 Windows 的默认搜索路径。原因是默认 安装脚本的行为是在 不同的目录。由用户决定 Windows 的位置 应该寻找 R(即使用哪个版本)。

    如果出现此错误消息,我们必须更改搜索路径,以便 它包括 R.exe 所在目录的路径。我们这样做 如下:

    1. 打开控制面板,选择“系统”,点击左侧菜单中的“高级系统设置”,然后选择“环境” 变量按钮;请参见图 5。
    2. 选择变量“路径”并单击“编辑”按钮。现在我们必须编辑“变量值”,以便它还包含指向 安装各种 R 二进制文件(程序)的目录。
    3. 通过查找安装 R 的目录,可以在 Windows 资源管理器中找到此文件的路径。请参见图 6。通常 路径类似于C:\Program Files\R\R-2.15.1\bin\x64,它 应附加到“变量值”中已存在的路径。
    4. 请注意,搜索路径中的各个路径用分号分隔,因此我们应该在字符串字符中添加一个初始的“;” 我们附加到“变量值”。结果如图 7.

    添加环境变量的路径后,您可以从存储 csv 文件的目录调用 Rscript

    Rscript myscript.R arg1 arg2 arg3
    

    或者你改变路径

     temp <- read.csv("Temperature.csv", header=T, sep=";", dec=",")
    

    R文件中

     temp <- read.csv("C:/Users/.../Temperature.csv", header=T, sep=";", dec=",")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-07
      • 1970-01-01
      • 2015-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多