R:还有比赛普利更快的吗?

R:还有比赛普利更快的吗?,r,sapply,R,Sapply,假设我有一个包含7个项目和5个选项的矩阵,以及一个包含10个人的向量。我需要计算的是将每个选项的每个项目值乘以每个人的值。我可以通过使用sapply,生成5个不同的矩阵。但是,事实上,由于我的数据非常庞大,我想知道是否还有比sapply更快的方法。下面是一个例子 set.seed(10) person<-round(runif(10,-2,2),3) [1] 0.030 -0.773 -0.292 0.772 -1.659 -1.098 -0.902 -0.911 0.463 -0.

假设我有一个包含7个项目和5个选项的矩阵,以及一个包含10个人的向量。我需要计算的是将每个选项的每个项目值乘以每个人的值。我可以通过使用
sapply
,生成5个不同的矩阵。但是,事实上,由于我的数据非常庞大,我想知道是否还有比sapply更快的方法。下面是一个例子

set.seed(10)
person<-round(runif(10,-2,2),3)
[1]  0.030 -0.773 -0.292  0.772 -1.659 -1.098 -0.902 -0.911  0.463 -0.281
set.seed(10)
item<-round(matrix(runif(35,0,1),nrow=7),3)
      [,1]  [,2]  [,3]  [,4]  [,5]
[1,] 0.507 0.272 0.358 0.615 0.771
[2,] 0.307 0.616 0.429 0.775 0.356
[3,] 0.427 0.430 0.052 0.356 0.536
[4,] 0.693 0.652 0.264 0.406 0.093
[5,] 0.085 0.568 0.399 0.707 0.170
[6,] 0.225 0.114 0.836 0.838 0.900
[7,] 0.275 0.596 0.865 0.240 0.423

## multiplication
m1<-t(sapply(person, FUN=function(x) item[,1]* x))
m2<-t(sapply(person, FUN=function(x) item[,2]* x))
m3<-t(sapply(person, FUN=function(x) item[,3]* x))
m4<-t(sapply(person, FUN=function(x) item[,4]* x))
m5<-t(sapply(person, FUN=function(x) item[,5]* x))
set.seed(10)
人你正在这样做

A <- outer(person,item)

你是一个超级英雄!多谢。突然又出现了一个问题。如果添加了求和,例如
test
t(项目[,1,drop=FALSE]*%矩阵(个人,nrow=1)+项目[,2])
> all.equal(A[,,1],m1)
[1] TRUE
> all.equal(A[,,2],m2)
[1] TRUE
> all.equal(A[,,3],m3)
[1] TRUE
> all.equal(A[,,4],m4)
[1] TRUE
> all.equal(A[,,5],m5)
[1] TRUE