我有一个名为PAP的简单函数。我在想,当我运行它时,为什么会出现以下错误:
Error in if (n.sim < 2) { : argument is of length zero
下面是我的PAP函数:
PAP = function (n.sim, sim.time){
n.sim = if(n.sim < 1) { n.sim = 1 } # If a user put zero or a negative number, make it 1
sim.time = if(n.sim < 2) { sim.time = 0 } else { sim.time }
for (i in 1:n.sim) {
plot( rnorm(1e2) )
Sys.sleep( sim.time ) }
}
PAP(n.sim = 2, sim.time = 5)发布于 2017-05-17 23:43:16
不应该尝试分配if语句的结果,因为这会发生:
> n.sim = 2
> n.sim = if(n.sim < 1) { n.sim = 1 }
> n.sim
NULL相反,你应该这样做:
PAP = function (n.sim, sim.time){
if(n.sim < 1) {
n.sim = 1
} # If a user put zero or a negative number, make it 1
if(n.sim < 2) {
sim.time = 0
} # else didn't do anything here so removed
for (i in 1:n.sim) {
plot( rnorm(1e2) )
Sys.sleep( sim.time )
}
}也就是说,只需使用if作为控制流语句,该语句确定是否执行特定行,并使用if语句中的代码更改变量。
https://stackoverflow.com/questions/44036348
复制相似问题