jzq90 代码如下,首先写了个函数test,有一个参数,然后用for循环20次,希望得到从参数为从1到20时,每次test的平均值 for (i in 1:20){ print(i) score <- replicate(10000, test(i)) mean(score) } 但是发现加上循环后,就不输出mean了;如果去掉for循环,只运行一次,是有mean的
Liechi jzq90 也可以把结果存在一个向量里,“以待子不时之需。” x <- vector(length = 20) for (i in 1:20){ score <- replicate(10, test(i)) x[i] <- mean(score) } x
Liechi jzq90 用 apply 的话: mt <- matrix(nrow = 10, ncol = 20) for (i in 1:20){ mt[,i] <- replicate(10, test(i)) } apply(mt, 2, mean)
tctcab jzq90 原理是这样,r里直接敲函数,变量,对象的话,暗地里调用了print()输出结果,这方便了你在命令行互动模式使用r时少敲个print。 直接命令行执行函数,返回值会在命令行打印出来, 但是函数中间命令的结果并不会打印出来。 for循环本身是个没有返回值特殊的函数,你那个mean()就是函数中间的语句,所以要打印出来的话就得手动加print。