r 脚本无法执行

问题描述 投票:0回答:1

我正在尝试创建一个快捷方式,当我单击该快捷方式时,r 脚本会自动运行。我使用了 Peter Meissner 在 https://www.r-bloggers.com/2015/02/making-r-files-executable-under-windows/ 中发布的说明,该示例工作正常,但我的脚本不行。为什么我的代码不起作用?

这是我的一段代码。

library(readxl)
library(dplyr)

accentless <- function( x ) {
  chartr(
    "áéóūáéíóúÁÉÍÓÚýÝàèìòùÀÈÌÒÙâêîôûÂÊÎÔÛãõÃÕñÑäëïöüÄËÏÖÜÿçÇ",
    "aeouaeiouAEIOUyYaeiouAEIOUaeiouAEIOUaoAOnNaeiouAEIOUycC",
    x );
}

my_tempdir <- tempdir()

setwd(my_tempdir)

if(!file.exists("./data")){dir.create("./data")}

planilha <- select.list(c("VIDRARIA e DESCARTÁVEIS", "LIMPEZA e ESCRITÓRIO", "E.P.I."), 
        title = ("Qual material deseja pesquisar?"))

此时脚本停止。

提前感谢您阐明问题。

r user-interface executable rscript
1个回答
0
投票

以非交互方式运行 R 时,无法使用

select.list()

如果这是代码中唯一需要用户输入的点,您可以让 shell 要求用户输入,然后将该输入传递给 R。

具体操作方式取决于您的操作系统:

对于 MacOS 或 Linux,您将编写 shell 脚本(.sh 文件):

#!/bin/bash
echo -e "1. VIDRARIA e DESCARTÁVEIS\n2. LIMPEZA e ESCRITÓRIO\n3. E.P.I."
read -p "Qual material deseja pesquisar? (Numero 1-3): " choice
Rscript /path/to/your/script.R $choice

(注意 - 在 MacOS 上,您可能需要也可能不需要将

/bin/bash
更改为
/bin/tcsh

对于 Windows,您可以编写一个批处理脚本(.bat 文件),如下所示:

ECHO 1. VIDRARIA e DESCARTÁVEIS
ECHO 2. LIMPEZA e ESCRITÓRIO
ECHO 3. E.P.I.
set /p choice=Qual material deseja pesquisar? (Numero 1-3)
RScript c:\path\to\your\script.R %choice

无论您的操作系统是什么,RScript 命令的位置都必须位于您的 PATH 变量中才能正常工作。

然后,您需要设置 R 脚本以便能够接受在命令行上传递给它的参数:

args <- commandArgs(trailingOnly = TRUE)
numero <- as.numeric(args[[1]])
planilha <- c('VIDRARIA e DESCARTÁVEIS','LIMPEZA e ESCRITÓRIO','E.P.I.')[numero]

如果您的 R 脚本仅需要用户交互来实现此第一选择,则这将起作用。如果此后需要更多用户输入,您可能无法使用此方法来运行 R,并且可能会从学习 shell 脚本中受益。如果您使用的是 MacOS 或 Linux,bash 脚本非常棒,您很快就会学会根据需要混合使用 bash 和 R。如果您使用的是 Windows,请安装 Cygwin,这样您也可以使用 bash 而不是使用 DOS 批处理脚本。

© www.soinside.com 2019 - 2024. All rights reserved.