我正在使用MC模拟对R中的障碍期权定价(如果标的资产超过120,它就不复存在了)。
基本上,我有一个矩阵(10000X100)可以有大约30到200的值,我希望如果一行中的值超过120,则该行中的所有值都将设置为0。 / p>
我认为人们在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
如果有人知道如何进行此计算,我将非常高兴
答案 0 :(得分:1)
这应该可以胜任,
执行matrix > 120
的rowums,如果有任何大于120的值,则总和将大于零。
exMatrix <- matrix(rpois(10000,110),nrow = 100)
Contains120 <- rowSums(exMatrix > 120)
exMatrix[Contains120 > 0,] <- 0