Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在循环内部使用摘要时收到错误消息_R_Dplyr - Fatal编程技术网

R 在循环内部使用摘要时收到错误消息

R 在循环内部使用摘要时收到错误消息,r,dplyr,R,Dplyr,具有包含244个数据帧的列表。此列表称为d,d[[1]]如下所示 d[[1]] year pos days sal 1 2009 A 31 2000 2 2009 B 60 4000 3 2009 C 10 600 4 2010 B 10 1000 5 2010 D 90 7000 我想按年份分组数据,添加天数和sal,并选择组中天数最多的pos 结果是: year pos days

具有包含244个数据帧的列表。此列表称为d,
d[[1]]
如下所示

d[[1]]

   year  pos  days   sal
1  2009  A     31   2000
2  2009  B     60   4000
3  2009  C     10    600
4  2010  B     10   1000
5  2010  D     90   7000
我想按年份分组数据,添加天数和sal,并选择组中天数最多的pos

结果是:

 year   pos  days   sal
1 2009    B    101   6600
2 2010    D    100   8000
我知道如何做到这一点,当它涉及到的情况下,做它只有一个数据帧。 我是这样做的:

library(dplyr)
ygroup<-group_by(d[[1]]$year)
summarise(ygroup, pos = pos[which.max(days)], days = sum(days), sal = sum(sal))
(我认为这部分;
pos=pos[which.max(days)]
造成了问题,但我不太确定……) 我怎样才能解决这个问题


如有任何意见,将不胜感激!:)

您的错误在e[[i]]您的错误在e[[i]我们可以使用
lappy
和匿名函数调用来循环
数据帧的
列表


我们可以使用
lappy
和匿名函数调用来循环
data.frame的
列表


尝试使用
lappy
lappy
lappy(d,function(x)x%>%groupby(year)%%>%总结(pos=pos[which.max(days)],days=sum(days),sal=sum(days))
尝试使用
lappy
lappy(d,function(x)x%>%groupby(year)%%总结(pos=pos[which.max(days),days=sum,days=sum(days),sal))
e<-list()
ygroup<-list()
for(i in 1:244){
ygroup[[i]]<-group_by(d[[i]]$year)
e[[i]]<-summarise(ygroup[[i]], pos = pos[which.max(days)], days = sum(days), sal = sum(sal))
}
Error: expecting a single value
ygroup<-lapply(ygroup,FUN=group_by,d$year)
e<-lapply(ygroup,FUN=summarise,pos = max(days), days = sum(days), sal = sum(sal))
lapply(d, function(x) x %>% 
                       group_by(year) %>% 
                       summarise(pos = pos[which.max(days)], 
                                 days = sum(days), sal = sum(sal)))