我使用 CronJobs 安排我的 R markdown 在每天下午 6 点运行。但是,它没有运行脚本并给了我以下错误:-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
的变量,假设它是数字或者你可以索引的东西vector/list/frame off of,并且它是非数字的或空的。我可以用
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-markdown 文件。
让我们在控制台上试试这个。复制以下内容(换行符和所有内容)并将其粘贴到您的 R 控制台中:
---
title: "EXAMPLECODE"
当您看到“一元”错误时,您会意识到 R 正在将此解释为命令。从字面上看,R 将其视为:“negate negate negate (newline/whitespace ignored) symbol(title) sequence-colon string(EXAMPLECODE)”。 (In)方便的是,title
也是R中的一个基函数,所以它存在;如果是的话
---
mytitle: "EXAMPLECODE"
(这不是有效的 Rmd),那么你的错误将改为读取
Error: object 'mytitle' not found
这会稍微更清楚/信息更丰富。
所以最终我不确定,但我的猜测是您无意中告诉 R 尝试将整个事情解释为 R 脚本,事实并非如此。也许 Rscript knitr::knit("/path/to/file.Rmd")
或类似的东西会起作用。
关于r - -title : invalid argument to unary operator Execution halted 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61624076/