apply函数 - 自定义函数最后返回NULL

时间:2017-12-20 01:54:29

标签: r

x = matrix(1:5)

func = function(x)  {
   for ( i in 1:x ) {
       print(i)
   }
}

apply(X=x, 1, func)

输出:

[1] 1
[1] 1
[1] 2
[1] 1
[1] 2
[1] 3
[1] 1
[1] 2
[1] 3
[1] 4
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
NULL

为什么这个函数最后会产生NULL?

1 个答案:

答案 0 :(得分:6)

根据定义,R函数返回要计算的最后一个表达式的结果。在这种情况下,表达式是整个for循环,返回NULL。如果您不想打印空结果,可以将结果存储在变量(result <- apply(...))中或使用invisible()

invisible(apply(X=x, 1, func))

我不知道修改函数本身以获取此行为的方法,因为您通过apply()调用该函数。

顺便说一句,为什么不invisible(lapply(x,func))