我有以下向量:
set.seed(1); v1 = rnorm(100, 40, 10)
fun1 <- function(x){
x = x - 1
return(x)
}
fun2 <- function(x){
x = x * 10
return(x)
}
fun3 <- function(x){
x = x / 5
return(x)
}
我想为向量的长度设置一个循环,但对元素应用不同的功能[i]
:
fun1 for v1[1:20]&v1[41:60]
fun2 for v1[21:40]
fun3 for v1[61:100]
然后返回一个向量。
原来,我真的不知道如何优雅地做。
使用mapply
:
unlist(mapply(function(myFun, x) myFun(x),
myFun = list(fun1, fun2, fun1, fun3),
x = list(v1[1:20], v1[21:40], v1[41:60], v1[61:100])))
如果您可以使用对某些子集使用某些函数的逻辑来更新我们,那么我们可以使其自动化程度更高,而不必为myFun
和输入值x
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句