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

问题描述 投票:3回答:1
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?

r
1个回答
6
投票

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

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

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

顺便问一下,为什么不invisible(lapply(x,func))

© www.soinside.com 2019 - 2024. All rights reserved.