Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.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_Matrix_While Loop_Apply - Fatal编程技术网

R “转换慢”;而";“循环到”;套用-类型函数

R “转换慢”;而";“循环到”;套用-类型函数,r,matrix,while-loop,apply,R,Matrix,While Loop,Apply,我创建了一个while循环,它在一个相当大的数据集上执行。循环如下所示: i = 1 while(i<=m){ Date = London.Events$start_time[i] j=1 while(j<=n){ Hotel = London.Hotels$AS400.ID[j] Day.Zero[i,j] = sum(London.Bookings$No.of.Rooms[London.Bookings$Stay.Date == Date &

我创建了一个while循环,它在一个相当大的数据集上执行。循环如下所示:

i = 1
while(i<=m){
  Date = London.Events$start_time[i] 
  j=1
  while(j<=n){
    Hotel = London.Hotels$AS400.ID[j]
    Day.Zero[i,j] = sum(London.Bookings$No.of.Rooms[London.Bookings$Stay.Date == Date & London.Bookings$Legacy.Hotel.Code == Hotel])
  j=j+1
  }
i=i+1
}
简要说明,对于日期和酒店的每个组合(从其他两个数据框中提取),从列
London.Bookings$No.of.Rooms
中生成总和,并将其存入矩阵的相应行中

循环似乎运行无误,但在5分钟后停止时,它仍在运行,且远未完成

我想知道如何使用apply系列函数中的一个来替代这里的函数,以更快地完成


谢谢

使用library
dplyr
,您可以执行以下操作(假设您的输入数据框有这样的列名-根据您的代码/问题进行模糊解释):

可能,

xtabs(No.of.Rooms ~ Stay.Date + Legacy.Hotel, data = London.Bookings)

让你得到与你想要的相似的东西

示例数据集在这里非常有用。请看
library(dplyr)
London.Bookings %>% group_by(Legacy.Hotel.Code, Stay.Date) %>% summarise(Total.No.of.Rooms = sum(No.of.Rooms))
xtabs(No.of.Rooms ~ Stay.Date + Legacy.Hotel, data = London.Bookings)