小编der*_*epe的帖子

从sapply/lapply返回多个值

我是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)

r lapply sapply

5
推荐指数
1
解决办法
2635
查看次数

以lapply/sapply访问前面的元素

我试图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

r lapply sapply

5
推荐指数
2
解决办法
1604
查看次数

标签 统计

lapply ×2

r ×2

sapply ×2