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?
答案 0 :(得分:6)
根据定义,R函数返回要计算的最后一个表达式的结果。在这种情况下,表达式是整个for
循环,返回NULL
。如果您不想打印空结果,可以将结果存储在变量(result <- apply(...)
)中或使用invisible()
:
invisible(apply(X=x, 1, func))
我不知道修改函数本身以获取此行为的方法,因为您通过apply()
调用该函数。
顺便说一句,为什么不invisible(lapply(x,func))
?