了解不同的应用输出

Understanding different sapply output

为什么

kappa <- c(0.0001,0.001,0.01,0.1,0.5,0.9,0.99)

sapply ( kappa, function (t) t)

sapply ( kappa, function (t) print(t)) 

return 不同的结果?

谢谢!

您的示例中漏掉了一个逗号,但您可以试试这个:

kappa <- c(0.0001,0.001,0.01,0.1,0.5,0.9,0.99)

sapply (X=kappa, FUN = function (t)t)

sapply 中发生的事情是 "Simplify apply",它将通过 BASE R 自行简化 - 它会尝试找到最佳格式来简化结果,在这种情况下,结果是 kappa 的数量函数

因为结果基于函数 - function(t) t - 这只是 returns t 的值 - 这只是 kappa

然而,当你是 运行 打印语句时,函数 (t) 打印 (t) - 在应用的每个 "step" - 它试图 "simplify" 打印调用- 这就是为什么你一个接一个地得到这个输出:

sapply ( kappa, function (t) t) 

也如上述用户评论:

它们是不同的,因为在第二种情况下 print(t) 做了两件不同的事情:它在控制台上打印 t 并 returns t 作为结果。第一个只有 returns 结果,没有打印。所以第二种情况是一样的,你只是看到在 sapply 完成之前打印的每个项目