首页 > 解决方案 > if - 参数长度为零

问题描述

我打算买一台 iPad,但它只有几分钟的库存,然后又用完了。因此,我编写了一个 R 脚本来检查在亚马逊上可用时触发电子邮件的可用性。

我在 R Studio 服务器上运行这个脚本,并使用 cronR 安排它每 1 分钟运行一次。

library(xml2)
library(rvest)
library(mailR)
library(stringr)

rm(list=ls())

link <- "https://www.amazon.in/dp/B0864JWYQX/" #iPad

ipad <- read_html(link)

#Availability 
avail <- ipad %>%
  html_nodes("#availability .a-size-medium") %>%
  html_text() %>%
  str_remove_all("\\\n")

#item name
item <- ipad %>%
  html_node("#productTitle") %>%
  html_text() %>%
  str_remove_all("\\\n")

if (avail == "Currently unavailable.") {
  print(paste("Unavailable on",Sys.time()))
} else {
  sender <- "Ashwini Kalantri <my@email.com>"
  to <- c("Ashwini Kalantri <my@email.com>","trigger@applet.ifttt.com")
  body <- paste0("<p>",item," is available on ",
                 format(Sys.time(),"%d %B %Y %I:%M %p"),
                 ".</p><p><a href =",quote("https://www.amazon.in/dp/B0864JWYQX/"),">BUY NOW!</a></p>")
  send.mail(from = sender,
            to = to,
            subject = paste0(item," #ipad"),
            body = body,
            html = T,
            smtp = list(host.name = "smtp.gmail.com", port = 465, 
                        user.name = "my@email.com",            
                        passwd = "password", ssl = TRUE),
            authenticate = TRUE,
            send = TRUE)
}

第一天,脚本运行良好,没有任何错误。但后来我开始在日志文件中收到以下错误。这是随机的,有时脚本会根据需要完美运行,但有时会出现以下错误。当我在 R Studio 控制台中运行该脚本时,该脚本每次都按需要运行。

Error in if (avail == "Currently unavailable.") { : 
  argument is of length zero
Execution halted

我不知道出了什么问题。非常感谢帮助。

标签: rif-statement

解决方案


推荐阅读