Различные выходы в R при нажатии кнопки RUN и SOURCE (В чем разница между вкладкой RUN и SOURCE в Rstudio)) - PullRequest
0 голосов
/ 12 октября 2019

Я только начал изучать, как я вычисляю корни квадратных уравнений, используя условные выражения. Вот мой код

a <- readline(prompt= "Enter value of a:")
b <- readline(prompt= "Enter value of b:")
c <- readline(prompt= "Enter value of c:")
a <- as.numeric(a)
b <- as.numeric(b)
c <- as.numeric(c)
D <-(b^2-4*a*c)
if (D>0) {
x_1 <- (-b+sqrt(D))/(2*a)  
x_2 <- (-b-sqrt(D))/(2*a)        
result <- (c(x_1 ,x_2 )) 
result
}else if(D==0){  
x <- rep((-b)/(2*a),2)  
}else if(D<0){
  x_1 <- (-b)/(2*a)+(sqrt(abs(D)))/(2*a)*(1i)  
  x_2 <- (-b)/(2*a)-(sqrt(abs(D)))/(2*a)*(1i)   
  result <- (c(x_1 ,x_2 )) 
  result
}

Когда я нажимаю run (ctrl + A), он говорит

Ошибка в 4 * a: не числовой аргумент для двоичного оператора

Когда янажмите источник, он запускает мой код и просит меня ввести значение a, b, c, и когда я вводю значения, затем нажмите ввод, он возвращает мне это

> a <- readline(prompt= "Enter value of a:")
Enter value of a:3

> b <- readline(prompt= "Enter value of b:")
Enter value of b:5

> c <- readline(prompt= "Enter value of c:")
Enter value of c:3

> a <- as.numeric(a)

> b <- as.numeric(b)

> c <- as.numeric(c)

> D <-(b^2-4*a*c)

> if (D>0){                       #why this came ?
+   x_1 <- (-b+sqrt(D))/(2*a)  
+   x_2 <- (-b-sqrt(D))/(2*a)        
+   result <- (c(x_1 ,x_2 )) 
+   result
+ }else if(D==0){  
+   x < .... [TRUNCATED]           #till here
[1] -0.8333333+0.5527708i -0.8333333-0.5527708i
> 

И в чем разница между щелчком запуска и источника. Почему разные выводы я не понимаю

1 Ответ

1 голос
/ 12 октября 2019
  • run похоже на вставку выбранных строк в консоль или ввод всего выделенного текста (включая переводы строк и т. Д.) В консоль.
  • source сохраняет выбранный текст в файлы и затем запускает команду source для этого файла. Чтобы точно увидеть, что source видит в документации (?source).

Выполнение команд часто проще, но имеет некоторые недостатки: оно не останавливается при возникновении ошибки или при запросе ввода. В этом случае первый readline запрашивает ввод. Он получает этот вход, а именно следующую строку в файле.

Небольшой пример:

a <- readline(prompt = "a: ")
print(a)
print(a)

При запуске этого (CRTL-A CRTL-ENTER) я вижу в консоли следующее:

> a <- readline(prompt = "a: ")
a: print(a)
> print(a)
[1] "print(a)"

Как вы можетесм. вторая строка print(a) используется в качестве ввода. Следовательно, a имеет значение print(a).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...