我是R的新手并试图用apply系列中的fuction替换一些for循环.我仍然完全不了解它们是如何工作的,但我设法生成了一段代码:
#create some input data
tech<-data.frame(cbind(c("p1","p2","p3","p4"),c(15,15,15,100),c(10,8,18,100)))
colnames(tech)=c("id","capacity.el","capacity.th")
tech$capacity.el<-as.numeric(tech$capacity.el)
tech$capacity.th<-as.numeric(tech$capacity.th)
heat<-data.frame(cbind(c(2,12,6,20,32,21,25,16,34,0),c(31,18,3,27,30,31,18,4,24,7),c(2,12,6,20,32,21,25,16,34,0),c(31,18,3,27,30,31,18,4,24,7)))
colnames(heat)=c("p1","p2","p3","p4")
> tech
id capacity.el capacity.th
1 p1 2 1
2 p2 2 4
3 p3 2 3
4 p4 1 2
> heat
p1 p2 p3 p4
1 2 31 2 31
2 12 18 12 18
3 6 3 6 3
4 20 27 20 27
5 32 30 32 30
6 21 31 21 31
7 25 18 25 18
8 16 4 16 4
9 34 …Run Code Online (Sandbox Code Playgroud) 我试图for用一个sapply函数替换一个循环.在循环内部我做了一些优化,因此需要为下一个循环进行一次优化的结果.
我想出了如何使用它sapply来运行优化,但问题是我需要从内部访问以前的结果sapply.
以下只是我试图实现的一个随机例子.
sapply(1:4, function(y){
r<-y
if(y!=1){z<-r[y-1]}
else{z<-9}
return(z)
})
[1,] 9 2 NA NA
Run Code Online (Sandbox Code Playgroud)
我期望得到的是:
[1,] 9 1 2 3
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?或者有没有办法访问以前的迭代结果sapply?