【发布时间】:2016-12-02 10:29:01
【问题描述】:
我想用循环填充我创建的空矩阵:
首先我创建了我的空矩阵,它工作正常:
for(q in (15:30)){
assign(paste0("P",q), matrix(, nrow = q, ncol = q+1))}
但是现在当我想用我的公式填充这些矩阵时,我得到了一个维度错误:
for(c in (1:q+1)){
for(i in (1:q)){assign(paste0("P",q)[i,c],
((((((q-c) + 1 -(q-c+1- i))/q)^.69)/(((((q-c) + 1 - (q-c+1-i))/q)^.69+(((1 - ((q-c) + 1 -(q-c+1-i))/q))^.69))^(1/.69))) - (((((q-c)-(q-c+1-i))/q)^.69)/(((((q-c) - (q-c+1-i))/q)^.69+(((1 - ((q-c)-(q-c+1-i))/q))^.69))^(1/.69)))))}}}
尽管如此,当我将此循环用于单个矩阵时,它可以工作,例如:
t <- 20
c <- 1
i <- 1
for(c in (1:t+1)){
for(i in (1:t)){P20[i,c]<-( (((((t-c) + 1 -(t-c+1-i))/t)^.69)/
(((((t-c) + 1 - (t-c+1-i))/t)^.69+(((1 - ((t-c) + 1 -(t-c+1-i))/t))^.69))^(1/.69))) -
(((((t-c)-(t-c+1-i))/t)^.69)/(((((t-c) - (t-c+1-i))/t)^.69+(((1 - ((t-c)-(t-c+1-i))/t))^.69))^(1/.69))))}}
这个公式是根据累积前景理论给出概率权重,如果有人感兴趣的话。
你们知道我怎样才能使它更优雅吗?我应该更好地编写用户定义的函数吗?
【问题讨论】:
-
你确定要一个
for循环吗,不用 -
我很乐意在没有循环的情况下这样做