我尝试提示用户输入" 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))
答案 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。走着瞧吧。