Как мне получить более короткое время выполнения? - PullRequest
0 голосов
/ 06 января 2020
num<-18.7
guess<- -1

print("Can you guess the daily dose per 1000 inhabititants in the UK?")

while(guess !=num) {
    guess<-readline(prompt = "Enter integer:")
    if (guess== num)
        cat(num, "is correct")
    if (guess<num)
        cat("it is bigger")
    if (guess>num)
        cat("It is smaller")
}

Он работает, когда я играю его через скрипт r, но когда я связываю его с уценкой, он не выдает ошибку или что-то еще, но он работает около 30 минут и все еще не завершен. Есть ли способ изменить это?

1 Ответ

1 голос
/ 07 января 2020

Как уже упоминалось в комментариях, код R в документе R Markdown выполняется, когда он связан, а не при просмотре. Говоря об интерактивности для R, обычно думают о Shiny . В некоторых случаях также возможно комбинировать Shiny напрямую с R Markdown, c .f. https://bookdown.org/yihui/rmarkdown/shiny-documents.html. Прямое преобразование вашего скрипта дает:

---
runtime: shiny
output: html_document
---

# Can you guess the daily dose per 1000 inhabititants in the UK?

```{r setup, include=FALSE}
num <- 18.7
```


```{r guessing-game, echo=FALSE}
numericInput("guess", label = "Enter number:", value = 0)

renderText({
    if (input$guess == num)
        paste(num, "is correct")
    else if (input$guess<num)
        "it is bigger"
    else if (input$guess>num)
        "It is smaller"
})
```

Такой документ может быть запущен локально или развернуто . Кстати, == не лучший выбор для сравнения чисел с плавающей запятой. Лучше использовать isTRUE(all.equal()):

> 0.3 == 0.1 + 0.1 + 0.1
[1] FALSE
> isTRUE(all.equal(0.3, 0.1 + 0.1 + 0.1))
[1] TRUE
...