我刚开始学习R,我用条件语句来计算二次方程的根。这是我的代码
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的值,当我输入值时,按enter键,它会返回给我以下内容
> 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
> 点击“运行”和“源”有什么不同。为什么不同的输出我不明白
发布于 2019-10-12 18:32:37
run就像将选定的行复制粘贴到控制台,或者在控制台中键入所有选定的文本(包括换行符等)。source将选定的文本保存到文件中,然后在该文件上运行source命令。要确切地了解source所看到的文档(?source)。运行命令通常更容易,但也有一些缺点:当发生错误或询问输入时,它不会停止。在这种情况下,第一个readline请求输入。它接收该输入,即文件中的下一行。
小例子:
a <- readline(prompt = "a: ")
print(a)
print(a)当运行这个(CRTL-一个CRTL-ENTER)时,我在控制台中看到以下内容:
> a <- readline(prompt = "a: ")
a: print(a)
> print(a)
[1] "print(a)"如您所见,第二行print(a)用作输入。因此,a具有print(a)值。
https://stackoverflow.com/questions/58356132
复制相似问题