很简单的循环,已知矩阵x[i,j],然后求x[i,]^2+x[,j]。
为何采用apply比for循环更慢?
源代码:
rm(list=ls())
# 生成数据集
x <- cbind(x1=3, x2 = c(10000:1, 1:10000))
# 封装fun1
fun1<-function(x){
myFUN<- function(x, c1, c2) {
x[c1]^2+x[c2]
}
f1 <- apply(x,1,myFUN,c1='x1',c2='x2')
}
# 封装fun2
fun2<-function(x){
f2 <- c()
for(i in 1:nrow(x)){
f2[i]<- x[i,1]^2+x[i,2]
}
}
# 封装fun3
fun3<-function(x){
f3 <- c(x[,1]^2+x[,2])
}
# 分别统计3种方法的CPU耗时。
system.time(fun1(x))
system.time(fun2(x))
system.time(fun3(x))