r - -title : invalid argument to unary operator Execution halted 错误

标签 r cron

我使用 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/

相关文章:

ruby - Cron 和 Ruby.. "puts ` 系统命令`"有什么作用吗?

linux - 根本无法让 Crontab 作业工作

javascript - onComplete() 不会在 Node cron 中被调用

php - 使用 crontab 执行 PHP 脚本时出错

r - r语言如何给hadoop用户root权限

r - 为什么 R 函数不使用来自父父环境的变量?

c++ - 从 C++ 调用 R 函数

r - 如何翻转 R 中的行和列

r - 如何将函数应用于特定列而不丢失其他列?

android - 如何在 Android 中设置一个持久/定期的时间表?