使用readline()时pbinom函数出错

时间:2017-09-08 03:04:23

标签: r

我尝试提示用户输入" n"价值,但我得到一个错误说:

  

pbinom(s [i],n,p)出错:
非数字参数   数学函数

如果我直接设置n = anynumber,该功能将完美运行。这有什么问题?

n = readline("please enter an integer n:")
p = seq(from = 0.05, to = 1,by=0.05)
s = seq(from = 0, to = n)
M <- matrix(0, ncol=length(p), nrow=length(s), dimnames=list(s, p))
for(i in seq_along(s)){
  M[i, ] <- pbinom(s[i], n, p)
}
print(round(M,3))

1 个答案:

答案 0 :(得分:1)

我解决了你的问题。您需要做的就是更改第一行:

n = as.numeric(readline("please enter an integer n:"))

如果使用class()或str()函数使用readline检查原始代码中的n值,即使您输入了数字,也会发现它是一个字符。如果您曾使用C语言的变体编程,那么您将知道需要声明变量类型。 readline()似乎默认为字符串,因此您只需将其强制转换为数字变量类型。你不能用字符做数学,只用数字做数学。所以我所做的就是改变从标准输入中获取的变量的类。

同样,你检查类或结构的方式会返回字符。

 > class(n)
[1] "character"

我的方式返回数字:

> class(n)
[1] "numeric"

尝试用两种情况计算n + 1。走着瞧吧。