我一直收到一条错误消息,说“x”必须是hist()输出的数字,我怎么能这个?
length= function(nsims,n)
{
x <- as.numeric(seq(2,nsims))
t <- lapply(x,abovex)
return(t)
}
hist(length(10,10))
注意:
abovex = function(n) {
if (n<=0){ return(cat("n must be greater than 0"))}
else
step = c(1, -1)
S = c(0, cumsum(sample(step,n, prob=c(.5, .5), replace=T)))
above=sum(S[S > 0])
return(above)
}
谢谢!
答案 0 :(得分:1)
您的length
函数返回一个列表,而不是数字向量。 length
也是一个原始函数,因此您可能需要选择其他名称以避免让自己感到困惑。
如果您希望将结果* s *暗示为矢量,请使用sapply
代替lapply
。
length_sims <- function(nsims,n)
{
x <- seq(2,nsims)
t <- sapply(x,abovex)
return(t)
}
hist(length_sims(10,10))
您的功能也可以缩短为:
length_sims_short <- function(n) sapply(seq(2, n), abovex)
hist(length_sims_short(10))