我有一个R脚本查询数据库,运行一些分析,根据当前系统日期绘制几个图表.
我想让这个脚本每天在启动时运行,我想我可以通过使用rscript.exe的快捷方式使用必要的参数来做到这一点.
这样可以正常工作,但是脚本在运行后退出,对查看图表不是很有用.
我正在使用XP和win7.
有没有一种简单的方法来保持屏幕上的脚本输出?我已经尝试将扫描结合到脚本中,但它不会暂停.
我知道我可以打开rgui并运行一行代码,但计划是将其部署到一个完全不熟悉R的同事的计算机上.
我正在编写一个使用roxygen2自动对我的包进行氧气化的脚本.我希望它是可执行的,这样它就可以成为准备和安装软件包的一个更大的脚本的一部分,但由于某些原因我不能使它与Rscript一起工作.
这是代码:
#!/usr/bin/env Rscript
library(roxygen2)
roxygenize('.', copy=FALSE)
Run Code Online (Sandbox Code Playgroud)
如果我启动交互式R会话或使用R CMD BATCH提交代码,这可以正常工作.但是,如果我通过Rscript将脚本作为可执行文件直接运行,我得到此输出和错误(无论脚本是在当前目录还是bin中,我都会收到错误).
bin/roxygenize.R
Loading required package: digest
Warning message:
package 'roxygen2' was built under R version 2.13.2
Error in parse.files(r_files) : could not find function "setPackageName"
Calls: roxygenize -> parse.files
Execution halted
Run Code Online (Sandbox Code Playgroud)
看起来setPackageName在基数R中,所以我无法弄清楚为什么它不在那里.另外,我在许多其他情况下使用Rscript,这似乎是唯一失败的地方.
任何帮助深表感谢.
我正在尝试从Rscript启动一个闪亮的应用程序或交互式.Rmd文档.但是,我得到的只是一条信息
听http : //127.0.0.1:...
我相信这是因为R正在以交互模式运行(关于此的另一篇文章).如何编写正确的Rscript以便以下任何一个都能正常工作?
#!/usr/bin/Rscript
## This
library(shiny)
runApp(appDir = "../app")
## Or this
## rmarkdown::run("Main.Rmd")
Run Code Online (Sandbox Code Playgroud) 当我尝试在RStudio上执行以下代码时
library(lubridate)
library(data.table)
a <- data.frame(c("2017-12-01 00:01:00","2017-12-02 00:01:00"),c(5,6))
colnames(a) <- c("t", "x")
a <- as.data.table(a)
a[, t := parse_date_time(t, orders = "ymd HMS")]
print(class(a$t))
paste("a:", format(a[1,1], format = "%Y-%m-%d %H:%M:%S"))
Run Code Online (Sandbox Code Playgroud)
我有以下结果:
[1] "a: 2017-12-01 00:01:00"
Run Code Online (Sandbox Code Playgroud)
但是当我尝试在Rscript下运行相同的代码时,输出是
[1] "a: 1"
Run Code Online (Sandbox Code Playgroud)
有没有人和我有同样的问题?任何帮助表示赞赏.
编辑:R版本3.3.1,平台x86_64-w64-mingw32/x64.
Windows Server 2012版本:
主要次要构建修订
6 2 9200 0
任何人都可以建议我如何让这个工作....
我有一个R脚本需要几分钟才能运行并写入几百行输出.我想在这个R脚本周围写一个shell脚本包装器,它将在后台启动R脚本,将其输出传递给一个文件并开始跟随该文件的底部.如果用户然后输入CTRL-C我想要它杀死shell脚本和tail命令但不是R脚本.听起来很简单吧?
我在下面制作了一个简化示例,但我不明白为什么这不起作用.每当我杀死shell脚本时,尽管R脚本显然在后台运行,但它也会被杀死.我试过nohup,disown等没有成功.
example.R
for(i in 1:1000){
Sys.sleep(1)
print(i)
}
Run Code Online (Sandbox Code Playgroud)
wrapper.sh
#!/bin/bash
Rscript example.R > logfile &
tail -f logfile
Run Code Online (Sandbox Code Playgroud)
提前致谢!
我在我的Mac上安装了一个自制的R版本(OS X,El Capitan 10.11.5).我已经成功使用rscript大约两周了.但是,当我今天早上尝试运行脚本时rscript file.r,我收到以下错误:
/usr/local/Cellar/r/3.3.1/R.framework/Versions/3.3/Resources/bin/R:209行:/usr/local/Library/ENV/4.3/sed:没有这样的文件或目录
/usr/local/Cellar/r/3.3.1/R.framework/Versions/3.3/Resources/bin/R:209行:/usr/local/Library/ENV/4.3/sed:没有这样的文件或目录
致命错误:无法打开文件'':没有这样的文件或目录
(这是完整的错误.是的,它出现两次,这不是一个错字.)
在收到该错误后,我尝试卸载并使用自制程序重新安装r.我犯了同样的错误.自从上次使用rscript以来我唯一安装的其他软件包(据我所知)是pspp,但是我没有理由认为这应该影响到rscript.
当然,错误是说/usr/local/Library/ENF/4.3/sed无法找到该文件./usr/local/library当然,在检查时这是真的,但我不知道解决这个问题的正确方法是什么.似乎rscript只是试图访问sed,它在OS X上是原生的.
关于我能做什么的任何想法?
这被发现是Homebrew/science中包含的错误.错误报告可以在这里找到:https://github.com/Homebrew/homebrew-science/issues/3839
暂时修复此问题(在OS X上测试,截至2016年7月17日12:54 PM中央)来自github上的ck37:
mkdir /usr/local/Library/ENV
ln -s /usr/local/Library/Homebrew/shims/super/ /usr/local/Library/ENV/4.3
Run Code Online (Sandbox Code Playgroud) 我正在尝试在 Windows shell 中运行以下 R 脚本:
Rscript C:/Documents/Folder name containing space/myscript.txt
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我收到错误:
Fatal error: cannot open file 'C:/Documents/Folder': No such file or directory
Run Code Online (Sandbox Code Playgroud)
但是,当我使用引号时(如其他帖子中建议的那样尝试单双和三重),我收到以下错误:
Rscript "C:/Documents/Folder name containing space/myscript.txt"
The filename, directory name, or volume label syntax is incorrect.
Run Code Online (Sandbox Code Playgroud)
我找不到解决空间问题和更改文件位置的方法,因此没有空格对我来说不是一个选择。
任何帮助将不胜感激。
进一步说明:
我遇到的问题与 R 没有直接关系,而是与将包含空格的文件路径传递给 Rscript 相关。
在文档中,Rsript 应按以下方式使用:
Rscript [options] [-e expr [-e expr2 ...] | file] [args]
Run Code Online (Sandbox Code Playgroud)
还指出:
表达式和文件中允许有空格(但需要保护它不受正在使用的 shell 的影响,如果有的话,例如通过将参数括在引号中)。
但是,尝试将文件路径括在引号中会导致错误
The filename, directory name, or volume label syntax is incorrect.
Run Code Online (Sandbox Code Playgroud)
为避免混淆,Rscript C:/Documents/Folder_name/myscript.txt当路径不包含任何空格时,运行可以正常工作Rscript …
我正在使用R,via Rscript和H2O,但是H2O正在崩溃.我想查看日志,但是当R会话结束时(即当Rscript完成时),包含它们的R tempdir似乎被删除了.
是否可以告诉R/Rscript不要删除它使用的tmp文件夹?
我正在利用Rscript通过 bash 运行 R 脚本,并且我想指定要传递给脚本本身内的函数的参数。具体来说,我想传递指定的参数:
.csv) 和当列名包含波浪号 ( ~)时,我遇到了问题。我试过用反引号包裹列名,但仍然不成功。
我想编写一个脚本,该脚本以.csv格式接收数据文件,并根据用户的选择为一个变量绘制直方图。
plot_histogram <- function(path_to_input, x_var) {
data_raw <- read.csv(file = path_to_input)
path_to_output_folder <- dirname(path_to_input)
png(filename = paste0(path_to_output_folder, "/", "output_plot.png"))
hist(as.numeric(na.omit(data_raw[[x_var]])), main = "histogram", xlab = "my_var")
replicate(dev.off(), n = 20)
}
Run Code Online (Sandbox Code Playgroud)
set.seed(123)
df <- data.frame(age = sample(20:80, size = 100, replace = TRUE))
write.csv(df, "some_age_data.csv")
plot_histogram(path_to_input = "some_age_data.csv",
x_var = "age")
Run Code Online (Sandbox Code Playgroud)
正如预期的,我得到一个.png与图文件,保存到同一目录中的.csv是

我想执行一个脚本file.R使用Rscript.在file.R,我使用包dplyr.
# file.R
df <- data.frame(ID,x,y,z,...)
library(dplyr)
filter(df, ID != "null")
......
Run Code Online (Sandbox Code Playgroud)
如果我没有在批处理文件中指定任何选项,则一切正常,因为file.R包含该行library(dplyr)
# 1) no specification of packages in the batch file
Rscript.exe file.R arg1 arg2 arg3 > outputFile.Rout 2>&1
Run Code Online (Sandbox Code Playgroud)
但是,如果我添加default-packages=utils批处理文件,
# 2) specification of packages utils in the batch file
Rscript.exe default-packages=utils file.R arg1 arg2 arg3 > outputFile.Rout 2>&1
Run Code Online (Sandbox Code Playgroud)
部分file.R使用dplyr不工作了(Error in filter(df, ID != 'null') : Object 'ID' could not …
r ×10
rscript ×10
bash ×3
shell ×2
batch-file ×1
cmd ×1
command-line ×1
linux ×1
logging ×1
macos ×1
r-markdown ×1
roxygen2 ×1
rstudio ×1
sed ×1
shiny ×1
tmp ×1
whitespace ×1
windows ×1