我真的很喜欢littler非常适合使用R编写脚本.但我不知道如何使用外部图形设备la gnuplot(例如使用Octave).我能够生成所需的图形,但我必须使用Sys.sleep并且我不想这样做,因为我想以交互方式关闭它我自己或者更好地继续脚本而不关闭设备.
到目前为止,这是我的代码:
#!/usr/bin/env r -t
suppressMessages(require(Cairo))
CairoX11()
plot(rnorm(1000), pch = 19)
Sys.sleep(50)
# some code without closing the graphics window
Run Code Online (Sandbox Code Playgroud)
我的问题是:你知道实现这个目标的方法吗?
任何提示,文档,链接或代码将不胜感激
我想弄清楚,如何运行 r 脚本,Rscript在 Windows 命令提示符中使用并要求用户输入。
到目前为止,我已经找到了如何在 R 的交互式 shell 中请求用户输入的答案。readline()任何对或做同样事情的努力都 scan()失败了。
例子:
我有一个多项式y=cX,其中X可以取多个值X1、X2、X3等等。C变量是已知的,所以为了计算 的值,我需要y向用户询问这些Xi值并将它们存储在我的脚本中的某个位置。
Uinput <- function() {
message(prompt"Enter X1 value here: ")
x <- readLines()
}
Run Code Online (Sandbox Code Playgroud)
这是要走的路吗?还有其他论据吗?会as.numeric帮忙吗?我该如何返回X1?实施会因操作系统而异吗?
谢谢。
我正在使用 R 中预安装的 RScript 包。
我想从命令提示符调用以下名为“test.R”的 R 脚本:
a <- c("a", "b", "c")
a
args <- commandArgs(TRUE)
b <- as.vector(args[1])
b
Run Code Online (Sandbox Code Playgroud)
我使用以下命令:
RScript test.R c("d","e","f")
Run Code Online (Sandbox Code Playgroud)
这将创建以下输出:
[1] "a" "b" "c"
[1] "c(d,e,f)"
Run Code Online (Sandbox Code Playgroud)
如您所见,第一个(也是唯一的)参数被解释为字符串,然后转换为一维向量。如何将参数解释为向量?
旁注:当然,向量的项可以分为多个参数,但在我的最终项目中,将有多个向量参数。实现这样的事情是我最后的手段:
RScript test.R "d" "e" "f" END_OF_VECTOR_1 "g" "h" "i" END_OF_VECTOR_2 "j" "k" "l"
Run Code Online (Sandbox Code Playgroud) 我正在尝试运行 Rscript。每次都会抛出警告消息:
“没有找到与‘Runuran’导出的方法相对应的函数:‘初始化’、‘显示’”
加载包时Runuran,执行停止并显示以下错误消息 -
初始化错误(值,...):无法在 new() 中使用类“character”的对象:类“unuran”不扩展该类调用:urweibull -> new -> 初始化 -> 初始化 执行停止
我真的很感激我能得到的任何帮助。我正在使用 R-3.2.1
我正在运行一个R脚本,该脚本每隔一小时读取一次Google表格。我为此使用googlesheets软件包和gs_auth()函数。最初,我通过交互式身份验证运行gs_auth()来存储令牌。从下一次开始,代码将仅读取保存的令牌并运行gs_auth(token = ...)函数进行身份验证。这是示例代码。
## One time execution to save token ##
token <- gs_auth(cache = TRUE)
saveRDS(token, file = "/myfilepath/googlesheets_token.rds")
## reading the saved token everytime the R script runs ##
gs_auth(token = "/myfilepath/googlesheets_token.rds")
Run Code Online (Sandbox Code Playgroud)
这可以正常工作几个小时,然后给我这个错误。
Auto-refreshing stale OAuth token.
Error in function_list[[k]](value) : Unauthorized (HTTP 401).
In addition: Warning message:
Unable to refresh token
Run Code Online (Sandbox Code Playgroud)
每次发生这种情况时,我都会运行两行一次的代码并存储一个新令牌,这又会运行几个小时,然后出现相同的错误。我也使用cache = FALSE代替TRUE,尽管我不清楚要使用哪个及其用途。但这并没有解决。我也尝试在每次使用in之前从本地目录读取令牌时刷新令牌gs_auth()。
t <- readRDS(file = "/myfilepath/googlesheets_token.rds")
t$refresh()
gs_auth(token = t)
Run Code Online (Sandbox Code Playgroud)
有没有什么方法可以解决此问题,并使每次身份验证都能正常工作而无需交互版本。
使用从命令行Rscript调用时,我间歇性地收到以下错误mclapply:
Error in sendMaster(try(lapply(X = S, FUN = FUN, ...), silent = TRUE)) :
write error, closing pipe to the master
Run Code Online (Sandbox Code Playgroud)
如果我在 R Studio 或交互式 R 会话中运行完全相同的代码,则不会出现错误。这个错误会在非常大的作业的各种上下文中弹出,每个工作人员必须将非常大的对象返回给小作业。我也试过关闭prescheduling,但它仍然抛出错误。有时,如果我减少mc.cores参数中的线程数,它就会消失。我在 Ubuntu 18.04.1 上使用 Microsoft R Open。它也出现在 Ubuntu 16.04 上。我没有尝试过的一件事是在标准 R 而不是 MRO 中运行代码。
这是我的Rscript -e 'sessionInfo()':
R version 3.5.1 (2018-07-02)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 18.04.1 LTS
Matrix products: default
BLAS: /opt/microsoft/ropen/3.5.1/lib64/R/lib/libRblas.so
LAPACK: /opt/microsoft/ropen/3.5.1/lib64/R/lib/libRlapack.so
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] …Run Code Online (Sandbox Code Playgroud) 我有一个使用非标准字体生成 ggplot 的简短脚本(请参阅下面的 MWE)。
如果我在 R(即 RStudio)中运行脚本,一切都按预期工作,并且我看不到任何错误。
当我使用命令行运行脚本时Rscript,出现错误:
Error in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
invalid font type
Calls: <Anonymous> ... drawDetails -> drawDetails.text -> grid.Call.graphics
In addition: There were 50 or more warnings (use warnings() to see the first 50)
Execution halted
Run Code Online (Sandbox Code Playgroud)
我用 执行脚本Rscript myscript.R,脚本的内容是
library(ggplot2)
theme_set(theme_light(base_family = "LM Roman 10"))
# if "base_family" is left empty, everything works with Rscript
p <- ggplot(mtcars, aes(x = wt, y = mpg)) +
geom_point()
ggsave("myplot.pdf", p, device …Run Code Online (Sandbox Code Playgroud) 我正在尝试安排 R 脚本在容器内运行。我有一个像这样的 docker 文件:
\n\n# Install R version 3.5\nFROM rocker/tidyverse:3.5.1\n\nUSER root\n\n# Install Ubuntu packages\nRUN apt-get update && apt-get install -y \\\n sudo \\\n gdebi-core \\\n pandoc \\\n pandoc-citeproc \\\n libcurl4-gnutls-dev \\\n libcairo2-dev \\\n libxt-dev \\\n libssl-dev \\\n xtail \\\n wget \\\n cron \n\n\n\n# Install R packrat, which we\'ll then use to install the other packages\nRUN R -e \'install.packages("packrat", repos="http://cran.rstudio.com", dependencies=TRUE);\' \n\n\n# copy packrat files\nCOPY packrat/ /home/project/packrat/\n# copy .Rprofile so that it know where to look for packages\nCOPY .Rprofile …Run Code Online (Sandbox Code Playgroud) 我是编程新手,我对两者之间的区别感到困惑。我已经用谷歌搜索了这个,但在阅读了回复后我仍然对其中的差异感到困惑。
我感到困惑的部分原因是我正在考虑在批处理文件中运行脚本。例如,假设我有一个 R 脚本,我创建了一个批处理文件来运行我使用 R.exe 的脚本。当我将其放入命令提示符并运行批处理文件时,它只需要我制作的脚本并在 R 的控制台中运行它,对吗?
我发现你可以使用 Rscript.exe 运行批处理文件,这让我很困惑,因为如果我将我制作的 R 脚本放入 R 的脚本部分(在控制台上方),那么这将如何执行任何操作呢?必须将其放入控制台才能运行。(除非 Rscript.exe 运行 R 脚本部分中的任何内容?)
如果有人能解释一下这一切对我来说是如何运作的,我将不胜感激。谢谢!
所以我正在尝试自己学习 R 并且只是在学习在线教程。我正在尝试编写一个递归函数来打印斐波那契数列的前 n 项,并且无法在没有错误的情况下运行代码:
if (nterms <= 0) { 中的错误:缺少需要 TRUE/FALSE 的值
我的代码在输入if else语句之前确实要求我输入,我认为这也很奇怪。以下是我的代码,任何帮助表示赞赏。
#Define the fibonacci sequence
recurse_fibonacci <- function(n) {
# Define the initial two values of the sequence
if (n <= 1){
return(n)
} else {
# define the rest of the terms of the sequence using recursion
return(recurse_fibonacci(n-1) + recurse_fibonacci(n-2))
}
}
#Take input from the user
nterms = as.integer(readline(prompt="How many terms? "))
# check to see if the number of terms entered …Run Code Online (Sandbox Code Playgroud) r ×10
rscript ×10
cmd ×2
command-line ×1
docker ×1
ggplot2 ×1
graphics ×1
linux ×1
mclapply ×1
microsoft-r ×1
readline ×1
stdin ×1
user-input ×1
vector ×1