标题中出错:一元运算符的无效参数已停止执行 [英] Error in -title : invalid argument to unary operator Execution halted

查看:24
本文介绍了标题中出错:一元运算符的无效参数已停止执行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用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")或类似内容可以替代。

这篇关于标题中出错:一元运算符的无效参数已停止执行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆