I olması için:aşağıdaki kodu daha verimli
WBP2=lapply(1:2500,function(j){as.data.frame(lapply(1:10000,function(i)
{rowSums(data.frame((mapply(`*`,Theta[[j]],t(W[i,]),SIMPLIFY=FALSE))))}))})
W bir matris 80 sütun ve 10000 satır olduğunu, Theta 1000 satır 80 sütun 2500 matrislerin bir listesidir. Amacımız, her 2500 simülasyon için 10000 adet veri tabanı oluşturmaktır. Her data.frame, [[j]] tetanın tüm sırası ile çarpılan bir W (W [i,]) satırının sonucu olacaktır (böylece 80 sütun ve 1000 satırlık bir portföy). biz sadece bu nedenle bir sütun ile 1000 satır) burada
bir data.frame Gördüğünüz gibi bir tekrarlanabilir kod
W=matrix((1:80), nrow =10, ncol=4)
theta= lapply(1:5,function(j){matrix((41:60),nrow=5,ncol=4)})
WBP=lapply(1:5,function(j){as.data.frame(lapply(1:10,function(i)
{rowSums(data.frame(as.matrix(theta[[j]])%*%as.numeric(t(W[i,]))))}))})
View(WBP[[1]])
bu portföyün her satırın toplamını gerek, oldukça ağır ve bilgisayarım böyle bir şeyi gerçekleştiremez.
Daha verimli ve daha az zaman harcatabilmemin bir yolu var mı?
Teşekkür ederim!
all.equal(WBP(),wbp1())
– Batanichekbazı lineer cebir çarpma gibi görünüyor ne kodunuzu kelimeyle açıklar. Matematiksel eşdeğer nedir? – chinsoon12
't (W [i,])' nin kullanımı nedir, çünkü 1, 80 boyutlarında bir matristir ve hatta aktarıldıktan sonra bile aynı boyutlar üretilecek mi? –