使用jsonlite进行R编织-在R减价时工作,但在编织期间不工作

使用jsonlite进行R编织-在R减价时工作,但在编织期间不工作,json,r,knitr,Json,R,Knitr,从我的R标记下来,我得到了一份成功的针织文件。然后我修改了两个与错误完全无关的单元格。突然,我第二次调用jsonlite时遇到了一个问题,导致编织过程出错,如以下错误所示: line 165: Error in open.connection(con, "rb"): Couldn't connect to server Calls: <anonymous ... fromJSON_String -> parseJSON -> parse_con -> open -&g

从我的R标记下来,我得到了一份成功的针织文件。然后我修改了两个与错误完全无关的单元格。突然,我第二次调用jsonlite时遇到了一个问题,导致编织过程出错,如以下错误所示:

line 165:  Error in open.connection(con, "rb"): Couldn't connect to server 
Calls: <anonymous ... fromJSON_String -> parseJSON -> parse_con -> open -> 
open.connection
第165行:打开时出错。连接(con,“rb”):无法连接到服务器 调用:parseJSON->parse\u con->open-> 开放式连接 检查源代码时,前面的一个单元格有一个进行json调用的函数。测试功能的单元1编织得很好。单元2在循环中重新使用函数来进行一系列json调用(它们之间有3.7秒的延迟)是不正确的。代码是有效的。甚至以前也织过。现在它抛出一个错误

我的直觉是,这是一个随机的性能问题,但现在它一再失败,这种行为违反了我的逻辑。我可以运行代码,它在每个单元格中都能正常工作。我已经检查了我的手机声明语法,寻找可能会导致编织失败的小故障,但我没有发现任何错误。代码太大,无法在这里完整显示,因此下面只是markdown文档中的相关单元格,在编织时工作的单元格(其中包含jsonlite)和紧接其后触发编织错误的单元格,即使代码工作正常

文档现在无法获取我的最新更改。如果您有任何想法或有用的建议,可以帮助您摆脱纠结,重新编制本文件,我们将不胜感激:

该单元运行良好,可编织:

```{r p5jLiteAns, message=FALSE, warning=FALSE}
# sample ids: tt0120737, tt0468569

library(curl)
library(jsonlite)

get_json_movieRecord <- function(movieID, showRequest=FALSE) {
  movieURL_start <- "http://www.omdbapi.com/?i="
  movieURL_end <- "&plot=short&r=json&tomatoes=true"
  moovURL <- paste0(movieURL_start, movieID, movieURL_end)
  if (showRequest == TRUE) {
    print(paste("Sending request: ", moovURL)) 
  }
  as.data.frame(jsonlite::fromJSON(moovURL), stringsAsFactors=FALSE)
}

# build initial data frame from first record:
movE_data <- get_json_movieRecord(IMDB_mvIDs[1,], TRUE)
movE_data[ ,1:6]
print(paste0("Num Cols: ", NCOL(movE_data)))

```
`{r p5jLiteAns,message=FALSE,warning=FALSE}
#样本ID:tt0120737、tt0468569
图书馆(curl)
图书馆(jsonlite)

我想我可以在这里看到答案。我在2次或3次编织尝试中都遇到了相同的错误,因为每次尝试都需要10分钟以上的时间才能达到错误点,所以这不是一个你想重复多次的过程。但是在做了一个肤浅的编辑(删除评论)之后,再次点击knit按钮会导致一个新的错误,与本文中显示的不同

此降价文档的完整代码需要一个小时或更长的时间来点击并重新运行每个单元格+时间来重新编制。即使每个单元格都是从以前的成功尝试中运行的(并且输出仍然在markdown文档中可见),我现在怀疑某些内容不再正确缓存。解决方案可能就是这样:重新运行每个单元格,然后再次尝试RStudio编织按钮


如果有人知道在这种情况下还有什么可以尝试的,请发帖子。否则,我将面临一个漫长的过程,在我完成其他一些工作之后,我将启动这个过程。

通常,如果我有非常长的操作,我可以在编织之外进行(并且不想弄乱缓存),我会将生成的对象保存到一个.Rdata文件中。然后我将在代码块中调用
load(“thingy.Rdata”)
。这有点像管道胶带,但节省了我很多时间和头痛。我不知道这对现在的hic有什么帮助。不过,如果我理解你的建议,这对未来可能会有帮助。首先,我必须通过重新做每件事来修复发生的事情。然后,一旦我得到了清晰的输出,并且编织效果很好,我应该将其保存到一个.Rdata文件中,然后将该文件的load()添加到我的代码顶部,这样我就不必在下次我想要为了一个小的更改而重新编织时再次运行它。那么,这应该允许我在load()命令的顶部重新运行新的增强单元,并整理结果?是这样吗?如果是的话,我会尽量避免这个问题再次发生。Thanks@matt-泰尔斯-谢谢你的帮助。有趣的症状:.RDATA env文件加载变量中的内容,但不加载创建变量时启动的文件,因此,如果在环境中使用多个文件,则会加载。您必须保留一个文件列表,以便与env文件一起使用。这个网站有问题。人们在评论中回答我的问题,但既不投票,也不发表他们的想法作为答案。正因为如此,我的零比率正在上升,我可能会失去提问的能力。当你在评论中回答我时,没有对什么引起了你的注意,你知道网站是这样工作的吗?很高兴知道,我不知道零比率。当我没有一个完整的“解决方案”,但只有一个不完整的建议或技巧帮助我时,我有时会发表评论。部分原因是我没有提出完整的解决方案,部分原因是为了避免否决票(我以前有过完整的、有效的解决方案被否决,可能是因为它们不够长)。尽管这个网站看起来很利他,但它确实是一项关于激励人类行为的有趣研究。。。当我使用直接返回到R的MCMC引擎时,我使用env文件,并且希望它可以应用-我无法使用ext文件!非常感谢!我想我已经没有赤字了。这个网站是令人惊讶的,你可以在这里找到什么,以及如何令人沮丧的政治有时可以。我自己的挣扎让我得出结论,我需要更好地进行投票,尽管我经常感到一种谨慎,希望在出现更完整或更具体的答案时有所保留。:-)谢谢你的夸奖。对R来说是个新手,但正在努力寻找答案。你的想法真的很有帮助。
```{r p5getDatawDelay}

for (i in 2:250) {
  # declared ahead of the loop and then added to within the loop
  # in theory, this should yield better performance:

  movE_data <- rbind(movE_data, get_json_movieRecord(IMDB_mvIDs[i,]))
  if (i %% 2 == 0) {   # Add delay to every other request ...

    cDelayRtn <- causeDelay(3.7)

  }
}

write.csv(movE_data, file='IMDB_Top250_OMDB_Detailed.csv')
movE_data[1:6, 1:6]
paste0("Number Rows: ", NROW(movE_data))
paste0("Number Cols: ", NCOL(movE_data))

```
```{r p5addTimeDelayFunc, echo=T, eval=T}

causeDelay <- function(x, showDelay = FALSE)
{
  p1 <- proc.time()
  Sys.sleep(x) # nothing happens for x seconds
  if (showDelay == TRUE) {
    proc.time() - p1
  }
} 
print("Text")
causeDelay(3.7, TRUE)
print("Text after delay.")
print("")
print("Text2")
causeDelay(3.7)
print("Text after delay.")

```