如果其中一个元素高于修订号,则用零替换行

时间:2016-11-29 01:30:07

标签: r if-statement matrix rows

我正在使用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

如果有人知道如何进行此计算,我将非常高兴

1 个答案:

答案 0 :(得分:1)

这应该可以胜任,

执行matrix > 120的rowums,如果有任何大于120的值,则总和将大于零。

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

Contains120 <- rowSums(exMatrix > 120)

exMatrix[Contains120 > 0,] <- 0