2016-11-29 43 views
0

我正在R中使用MC模擬來執行Barrier選項的定價(如果標的資產超過120,它將不復存在)。如果其中一個元素的值高於固定值,則將其替換爲零

基本上,我有一個矩陣(10000X100),其值可以從30到200左右,我希望如果一行中的值超過120,則此行中的所有值都將設置爲0。

我認爲人們不喜歡它,在MatLab的,但我不能做在R:

nbrsim = 10000; 
nbr_step = 100; 
S = zeros(nbrsim,nbre_step+1); 
    for j = 1:nbrsim 
    if min(S(j,:)) <= B 
     l(j) = 0; 
    else 
     l(j) = 1; 
    end 
    vectpayoffs(j) = l(j)*max(ST(j) - K,0); 
    end 

如果有人知道如何做到這一點的計算

+3

'values [apply(values> 120,1,any),] < - 0' – Barker

+0

您的解決方案工作得很好,非常感謝! – davidou0201

回答

1

這應該做我會很高興這份工作,

做的行數爲matrix > 120,如果有任何值大於120,總和將大於零。

exMatrix <- matrix(rpois(10000,110),nrow = 100) 

Contains120 <- rowSums(exMatrix > 120) 

exMatrix[Contains120 > 0,] <- 0 
相關問題