问题描述
我使用CronJobs将R降价安排为每天下午6点运行但是,它没有运行脚本,并给出以下错误:Error in-title:一元运算符的无效参数执行已停止。工作目录设置为我的源位置。
有什么建议吗?谢谢!
以下是我的代码:
---
title: "EXAMPLECODE"
author: "XXXX"
date: "5/4/2020"
output: pdf_document
---
#STEP 1: INSTALL AND LOAD RCURL PACKAGE
```{r}
install.packages("RCurl")
library(RCurl)
```
#STEP 2: READ IN CSV FILE FOR EXAMPLE
```{r}
Example<- getURL("https://www.EXAMPLEURLHERE.csv")
ExampleData <- read.csv(text = Example)
ExampleData
```
#STEP 3: SAVE DATA INTO CSV FILE
```{r}
write.table(ExampleData, file="ExampleData_Update.csv", sep=",")
```
推荐答案
当您的一元运算符(例如,-
、+
或!
)位置不正确时,通常会出现此错误。这表明您有一个打字错误或对象是空的,或者不是您想的那样。猜测(因为您还没有回应@AllanCameron的轻描淡写的建议)是,您在某个地方有一个名为title
的变量,假设它是数值或可以索引向量/列表/帧的内容,并且它不是数字,也可以是空的。我可以用
title <- c()
mtcars[-title,]
# Error in -title : invalid argument to unary operator
title <- "1"
mtcars[-title,]
# Error in -title : invalid argument to unary operator
如果您希望对错误进行堆栈跟踪,则可以采纳https://renkun.me/2020/03/31/a-simple-way-to-show-stack-trace-on-error-in-r/的建议:
options(error = function() {
sink(stderr())
on.exit(sink(NULL))
traceback(3, max.lines = 1L)
if (!interactive()) {
q(status = 1)
}
})
mtcars[-title,]
# Error in -title : invalid argument to unary operator
# 2: `[.data.frame`(mtcars, -title, )
# 1: mtcars[-title, ]
在这种情况下,它会告诉您更多信息。如果它在函数中,堆栈跟踪将给出行号。
myfunc <- function(title) {
1+1 # doing something
2*2 # doing something else
3^3 # yawn
mtcars[-title,]
}
myfunc(1:30)
# mpg cyl disp hp drat wt qsec vs am gear carb
# Maserati Bora 15.0 8 301 335 3.54 3.57 14.6 0 1 5 8
# Volvo 142E 21.4 4 121 109 4.11 2.78 18.6 1 1 4 2
myfunc(c())
# Error in -title : invalid argument to unary operator
# 3: `[.data.frame`(mtcars, -title, ) at #5
# 2: mtcars[-title, ] at #5
# 1: myfunc(c())
(我知道,这里title
命名错误,只是过度证明了这一点。)
(再次声明:我在data.frame
上进行了演示,但这也适用于矢量/列表:(1:10)[-title]
)
此外,在看到您的"脚本"时:它不是脚本。这是一份文件。如果我是正确的,那么您应该将其称为
Rscript /path/to/file.Rmd
。在这种情况下,R认为这是R脚本文件,而不是R减价文件。让我们在控制台上尝试一下。复制以下内容(换行符和全部)并将其粘贴到R控制台中:
---
title: "EXAMPLECODE"
当您看到"一元"错误时,您会意识到R将此解释为命令。在字面意义上,R将其视为:"否定(忽略换行符/空格)符号(标题)序列-冒号字符串(EXAMPLECODE)"。(In)方便地说,title
也是R中的基函数,因此它是存在的;如果它是
---
mytitle: "EXAMPLECODE"
(这不是有效的RMD),则您的错误将改为
Error: object 'mytitle' not found
哪个会稍微更清楚一些/更有信息性。
所以最终我不能确定,但我猜您可能无意中告诉R尝试将整个事情解释为R脚本,而它不是。也许Rscript knitr::knit("/path/to/file.Rmd")
或类似内容可以替代。
这篇关于标题中出错:一元运算符的无效参数已停止执行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!