【发布时间】:2018-10-01 21:29:09
【问题描述】:
我有以下数据:
set.seed(20)
pay1<-sample(1:10,10,replace=TRUE)
pay2<-sample(1:10,10,replace=TRUE)
pay3<-sample(1:10,10,replace=TRUE)
gamematrix<-cbind(pay1,pay2,pay3)
gamematrix<-data.frame(gamematrix)
gamematrix
pay1 pay2 pay3
1 9 8 5
2 8 8 1
3 3 1 5
4 6 8 1
5 10 2 3
6 10 5 1
7 1 4 10
8 1 2 10
9 4 3 1
10 4 9 7
现在,我想创建一个新的数据框,为上面的结果赋予一些权重:
w=0.5
q_array<-data.frame(sapply(1:3, function(x) rep(0,10)))
for (i in 2:3){
for (j in 1:10){
q_array[j,i]=(1-w)*q_array[j,i-1]+w*gamematrix[j,i-1]
}
}
X1 X2 X3
1 0 4.5 6.25
2 0 4.0 6.00
3 0 1.5 1.25
4 0 3.0 5.50
5 0 5.0 3.50
6 0 5.0 5.00
7 0 0.5 2.25
8 0 0.5 1.25
9 0 2.0 2.50
10 0 2.0 5.50
换句话说:在第一次选择之后(始终为“0”),q_array 对“gamematrix”的结果和之前的“q_array”结果给予相等的权重。
例如:q_array的第1行:
column 1 = 0 (by definition)
column 2 = 0.5*0 + 0.5*9 = 4.5
column 3 = 0.5*4.5 + 0.5*8 = 6.25
我知道如何使用嵌套循环(在此处介绍)来解决它。 但是有没有更快、更优雅的方式,例如使用应用函数?
谢谢!
【问题讨论】:
标签: r loops apply data-manipulation