我正在尝试创建一个快捷方式,当我单击该快捷方式时,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 时,无法使用
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 批处理脚本。