这种方法叫做anonymous function,在配合sapply与lapply这两个function上有
很好的效果,不需要在外头定义一个function并赋予variable name再使用apply
家族的functions,其实类同于python的lambda。
data <- c(1, 3, 5, 7, 9) # 简单的资料
data <- sapply(1 : 5, function(k) {
data[k] + 1
})
上面的这个k函数是你可以随便给予的一个暂时的variable
这个值会接下来暂代你前面的资料,也就是1、2、3、4、5
这个apply会跑5次,因为你的资料给进去的长度是5
第一次跑的时候他看到你的资料是1,所以这时候k就是1
我给的指令是帮我算data这个向量里面的第一个值 + 1
所以是data[1] + 1,第二项是data[2] + 2
做了五次,所以最后的结果是1 + 1, 3 + 1, 5 + 1....
如果你不assign给一个varaible,他的默认就是print出来
所以上面如果不给data这个variable他就会print 2, 4, 6, 8, 10
跟循环一样,你不一定要跟k有关系,可能他就是拿来定义要跑的次数的
sapply(1 : 5, function(k) {
"I Love You"
})
这个型态一样可行,一般建议不需要更改function外的variable才使用apply
要更改function外的variable用for loop,两个虽然有时可以交换使用,但各
有适合的地方。如果你真的很想在这边用apply,下面这个做法可能可行
data <- c(5, 4, 3, 2, 1)
sapply(1 : 5, function(k) {
data[k] <<- data[k] + 1
})
这是一种可行的方案,你也不需要assign variable
但这只是提供你这个方法,这个方法并不建议使用。