【问题标题】:How to create a function that multiplies until reaching a total?如何创建一个乘以直到达到总数的函数?
【发布时间】:2016-10-13 21:40:07
【问题描述】:

除非达到特定的总数,否则我如何编写一个函数来根据另一个变量的内容乘以一个数字?

x*1.45 直到达到 1000,如果达到 1000 则停止。

编辑:

对于进一步的上下文,这就是我试图计算贫困人口的数量:

对于有 6 岁以下孩子的家庭,该提案将逐步实施 CTC 以每 1 美元收益 45 美分的利率计算,从 第一美元的收入。

对于有大孩子的家庭,分阶段费用为每人 15 美分 美元的收入。

以下是我目前拥有的,但不太正确:

y <-
    svrepdesign(
        weights = ~marsupwt, 
        repweights = "pwwgt[1-9]", 
        type = "Fay", 
        rho = (1-1/sqrt(4)),
        data = "asec15" ,
        combined.weights = T ,
        dbtype = "MonetDBLite" ,
        dbname = dbfolder
    )

    f = function(x) if (x < 1000) exp(seq(log(x), log(1000), by=log(1.15))) else x
    c = function(x) if (x < 2000) exp(seq(log(x), log(2000), by=log(1.45))) else x

CTC_Update <-subset( 
        y , 
            (spmu_numkids == 0 & spmu_resources < spmu_povthreshold) | 
            (spmu_numkids == 1 & fownu6 == 0 & spmu_resources - spmu_actc + 1*f(ftotval) + 0*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 2 & fownu6 == 0 & spmu_resources - spmu_actc + 2*f(ftotval) + 0*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 3 & fownu6 == 0 & spmu_resources - spmu_actc + 3*f(ftotval) + 0*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 4 & fownu6 == 0 & spmu_resources - spmu_actc + 4*f(ftotval) + 0*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 5 & fownu6 == 0 & spmu_resources - spmu_actc + 5*f(ftotval) + 0*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 6 & fownu6 == 0 & spmu_resources - spmu_actc + 6*f(ftotval) + 0*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 7 & fownu6 == 0 & spmu_resources - spmu_actc + 7*f(ftotval) + 0*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 8 & fownu6 == 0 & spmu_resources - spmu_actc + 8*f(ftotval) + 0*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 9 & fownu6 == 0 & spmu_resources - spmu_actc + 9*f(ftotval) + 0*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 10 & fownu6 == 0 & spmu_resources - spmu_actc + 10*f(ftotval) + 0*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 11 & fownu6 == 0 & spmu_resources - spmu_actc + 11*f(ftotval) + 0*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 12 & fownu6 == 0 & spmu_resources - spmu_actc + 12*f(ftotval) + 0*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 13 & fownu6 == 0 & spmu_resources - spmu_actc + 13*f(ftotval) + 0*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 14 & fownu6 == 0 & spmu_resources - spmu_actc + 14*f(ftotval) + 0*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 15 & fownu6 == 0 & spmu_resources - spmu_actc + 15*f(ftotval) + 0*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 16 & fownu6 == 0 & spmu_resources - spmu_actc + 16*f(ftotval) + 0*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 17 & fownu6 == 0 & spmu_resources - spmu_actc + 17*f(ftotval) + 0*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 18 & fownu6 == 0 & spmu_resources - spmu_actc + 18*f(ftotval) + 0*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 19 & fownu6 == 0 & spmu_resources - spmu_actc + 19*f(ftotval) + 0*c(ftotval) < spmu_povthreshold) |
            (spmu_numkids >= 20 & fownu6 == 0 & spmu_resources - spmu_actc + 20*f(ftotval) + 0*c(ftotval) < spmu_povthreshold) |
            (spmu_numkids == 1 & fownu6 == 1 & spmu_resources - spmu_actc + 1*f(ftotval) + 1*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 2 & fownu6 == 1 & spmu_resources - spmu_actc + 2*f(ftotval) + 1*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 3 & fownu6 == 1 & spmu_resources - spmu_actc + 3*f(ftotval) + 1*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 4 & fownu6 == 1 & spmu_resources - spmu_actc + 4*f(ftotval) + 1*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 5 & fownu6 == 1 & spmu_resources - spmu_actc + 5*f(ftotval) + 1*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 6 & fownu6 == 1 & spmu_resources - spmu_actc + 6*f(ftotval) + 1*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 7 & fownu6 == 1 & spmu_resources - spmu_actc + 7*f(ftotval) + 1*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 8 & fownu6 == 1 & spmu_resources - spmu_actc + 8*f(ftotval) + 1*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 9 & fownu6 == 1 & spmu_resources - spmu_actc + 9*f(ftotval) + 1*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 10 & fownu6 == 1 & spmu_resources - spmu_actc + 10*f(ftotval) + 1*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 11 & fownu6 == 1 & spmu_resources - spmu_actc + 11*f(ftotval) + 1*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 12 & fownu6 == 1 & spmu_resources - spmu_actc + 12*f(ftotval) + 1*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 13 & fownu6 == 1 & spmu_resources - spmu_actc + 13*f(ftotval) + 1*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 14 & fownu6 == 1 & spmu_resources - spmu_actc + 14*f(ftotval) + 1*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 15 & fownu6 == 1 & spmu_resources - spmu_actc + 15*f(ftotval) + 1*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 16 & fownu6 == 1 & spmu_resources - spmu_actc + 16*f(ftotval) + 1*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 17 & fownu6 == 1 & spmu_resources - spmu_actc + 17*f(ftotval) + 1*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 18 & fownu6 == 1 & spmu_resources - spmu_actc + 18*f(ftotval) + 1*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 19 & fownu6 == 1 & spmu_resources - spmu_actc + 19*f(ftotval) + 1*c(ftotval) < spmu_povthreshold) |
            (spmu_numkids >= 20 & fownu6 == 1 & spmu_resources - spmu_actc + 20*f(ftotval) + 1*c(ftotval) < spmu_povthreshold)  |       
            (spmu_numkids == 1 & fownu6 == 2 & spmu_resources - spmu_actc + 1*f(ftotval) + 2*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 2 & fownu6 == 2 & spmu_resources - spmu_actc + 2*f(ftotval) + 2*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 3 & fownu6 == 2 & spmu_resources - spmu_actc + 3*f(ftotval) + 2*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 4 & fownu6 == 2 & spmu_resources - spmu_actc + 4*f(ftotval) + 2*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 5 & fownu6 == 2 & spmu_resources - spmu_actc + 5*f(ftotval) + 2*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 6 & fownu6 == 2 & spmu_resources - spmu_actc + 6*f(ftotval) + 2*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 7 & fownu6 == 2 & spmu_resources - spmu_actc + 7*f(ftotval) + 2*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 8 & fownu6 == 2 & spmu_resources - spmu_actc + 8*f(ftotval) + 2*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 9 & fownu6 == 2 & spmu_resources - spmu_actc + 9*f(ftotval) + 2*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 10 & fownu6 == 2 & spmu_resources - spmu_actc + 10*f(ftotval) + 2*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 11 & fownu6 == 2 & spmu_resources - spmu_actc + 11*f(ftotval) + 2*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 12 & fownu6 == 2 & spmu_resources - spmu_actc + 12*f(ftotval) + 2*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 13 & fownu6 == 2 & spmu_resources - spmu_actc + 13*f(ftotval) + 2*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 14 & fownu6 == 2 & spmu_resources - spmu_actc + 14*f(ftotval) + 2*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 15 & fownu6 == 2 & spmu_resources - spmu_actc + 15*f(ftotval) + 2*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 16 & fownu6 == 2 & spmu_resources - spmu_actc + 16*f(ftotval) + 2*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 17 & fownu6 == 2 & spmu_resources - spmu_actc + 17*f(ftotval) + 2*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 18 & fownu6 == 2 & spmu_resources - spmu_actc + 18*f(ftotval) + 2*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 19 & fownu6 == 2 & spmu_resources - spmu_actc + 19*f(ftotval) + 2*c(ftotval) < spmu_povthreshold) |
            (spmu_numkids >= 20 & fownu6 == 2 & spmu_resources - spmu_actc + 20*f(ftotval) + 2*c(ftotval) < spmu_povthreshold)  |   
            (spmu_numkids == 1 & fownu6 == 3 & spmu_resources - spmu_actc + 1*f(ftotval) + 3*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 2 & fownu6 == 3 & spmu_resources - spmu_actc + 2*f(ftotval) + 3*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 3 & fownu6 == 3 & spmu_resources - spmu_actc + 3*f(ftotval) + 3*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 4 & fownu6 == 3 & spmu_resources - spmu_actc + 4*f(ftotval) + 3*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 5 & fownu6 == 3 & spmu_resources - spmu_actc + 5*f(ftotval) + 3*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 6 & fownu6 == 3 & spmu_resources - spmu_actc + 6*f(ftotval) + 3*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 7 & fownu6 == 3 & spmu_resources - spmu_actc + 7*f(ftotval) + 3*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 8 & fownu6 == 3 & spmu_resources - spmu_actc + 8*f(ftotval) + 3*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 9 & fownu6 == 3 & spmu_resources - spmu_actc + 9*f(ftotval) + 3*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 10 & fownu6 == 3 & spmu_resources - spmu_actc + 10*f(ftotval) + 3*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 11 & fownu6 == 3 & spmu_resources - spmu_actc + 11*f(ftotval) + 3*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 12 & fownu6 == 3 & spmu_resources - spmu_actc + 12*f(ftotval) + 3*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 13 & fownu6 == 3 & spmu_resources - spmu_actc + 13*f(ftotval) + 3*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 14 & fownu6 == 3 & spmu_resources - spmu_actc + 14*f(ftotval) + 3*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 15 & fownu6 == 3 & spmu_resources - spmu_actc + 15*f(ftotval) + 3*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 16 & fownu6 == 3 & spmu_resources - spmu_actc + 16*f(ftotval) + 3*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 17 & fownu6 == 3 & spmu_resources - spmu_actc + 17*f(ftotval) + 3*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 18 & fownu6 == 3 & spmu_resources - spmu_actc + 18*f(ftotval) + 3*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 19 & fownu6 == 3 & spmu_resources - spmu_actc + 19*f(ftotval) + 3*c(ftotval) < spmu_povthreshold) |
            (spmu_numkids >= 20 & fownu6 == 3 & spmu_resources - spmu_actc + 20*f(ftotval) + 3*c(ftotval) < spmu_povthreshold)  |   
            (spmu_numkids == 1 & fownu6 == 4 & spmu_resources - spmu_actc + 1*f(ftotval) + 4*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 2 & fownu6 == 4 & spmu_resources - spmu_actc + 2*f(ftotval) + 4*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 3 & fownu6 == 4 & spmu_resources - spmu_actc + 3*f(ftotval) + 4*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 4 & fownu6 == 4 & spmu_resources - spmu_actc + 4*f(ftotval) + 4*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 5 & fownu6 == 4 & spmu_resources - spmu_actc + 5*f(ftotval) + 4*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 6 & fownu6 == 4 & spmu_resources - spmu_actc + 6*f(ftotval) + 4*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 7 & fownu6 == 4 & spmu_resources - spmu_actc + 7*f(ftotval) + 4*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 8 & fownu6 == 4 & spmu_resources - spmu_actc + 8*f(ftotval) + 4*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 9 & fownu6 == 4 & spmu_resources - spmu_actc + 9*f(ftotval) + 4*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 10 & fownu6 == 4 & spmu_resources - spmu_actc + 10*f(ftotval) + 4*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 11 & fownu6 == 4 & spmu_resources - spmu_actc + 11*f(ftotval) + 4*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 12 & fownu6 == 4 & spmu_resources - spmu_actc + 12*f(ftotval) + 4*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 13 & fownu6 == 4 & spmu_resources - spmu_actc + 13*f(ftotval) + 4*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 14 & fownu6 == 4 & spmu_resources - spmu_actc + 14*f(ftotval) + 4*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 15 & fownu6 == 4 & spmu_resources - spmu_actc + 15*f(ftotval) + 4*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 16 & fownu6 == 4 & spmu_resources - spmu_actc + 16*f(ftotval) + 4*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 17 & fownu6 == 4 & spmu_resources - spmu_actc + 17*f(ftotval) + 4*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 18 & fownu6 == 4 & spmu_resources - spmu_actc + 18*f(ftotval) + 4*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 19 & fownu6 == 4 & spmu_resources - spmu_actc + 19*f(ftotval) + 4*c(ftotval) < spmu_povthreshold) |
            (spmu_numkids >= 20 & fownu6 == 4 & spmu_resources - spmu_actc + 20*f(ftotval) + 4*c(ftotval) < spmu_povthreshold)  |               
            (spmu_numkids == 1 & fownu6 == 5 & spmu_resources - spmu_actc + 1*f(ftotval) + 5*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 2 & fownu6 == 5 & spmu_resources - spmu_actc + 2*f(ftotval) + 5*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 3 & fownu6 == 5 & spmu_resources - spmu_actc + 3*f(ftotval) + 5*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 4 & fownu6 == 5 & spmu_resources - spmu_actc + 4*f(ftotval) + 5*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 5 & fownu6 == 5 & spmu_resources - spmu_actc + 5*f(ftotval) + 5*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 6 & fownu6 == 5 & spmu_resources - spmu_actc + 6*f(ftotval) + 5*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 7 & fownu6 == 5 & spmu_resources - spmu_actc + 7*f(ftotval) + 5*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 8 & fownu6 == 5 & spmu_resources - spmu_actc + 8*f(ftotval) + 5*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 9 & fownu6 == 5 & spmu_resources - spmu_actc + 9*f(ftotval) + 5*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 10 & fownu6 == 5 & spmu_resources - spmu_actc + 10*f(ftotval) + 5*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 11 & fownu6 == 5 & spmu_resources - spmu_actc + 11*f(ftotval) + 5*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 12 & fownu6 == 5 & spmu_resources - spmu_actc + 12*f(ftotval) + 5*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 13 & fownu6 == 5 & spmu_resources - spmu_actc + 13*f(ftotval) + 5*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 14 & fownu6 == 5 & spmu_resources - spmu_actc + 14*f(ftotval) + 5*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 15 & fownu6 == 5 & spmu_resources - spmu_actc + 15*f(ftotval) + 5*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 16 & fownu6 == 5 & spmu_resources - spmu_actc + 16*f(ftotval) + 5*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 17 & fownu6 == 5 & spmu_resources - spmu_actc + 17*f(ftotval) + 5*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 18 & fownu6 == 5 & spmu_resources - spmu_actc + 18*f(ftotval) + 5*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 19 & fownu6 == 5 & spmu_resources - spmu_actc + 19*f(ftotval) + 5*c(ftotval) < spmu_povthreshold) |
            (spmu_numkids >= 20 & fownu6 == 5 & spmu_resources - spmu_actc + 20*f(ftotval) + 5*c(ftotval) < spmu_povthreshold)  |   
            (spmu_numkids == 1 & fownu6 == 6 & spmu_resources - spmu_actc + 1*f(ftotval) + 6*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 2 & fownu6 == 6 & spmu_resources - spmu_actc + 2*f(ftotval) + 6*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 3 & fownu6 == 6 & spmu_resources - spmu_actc + 3*f(ftotval) + 6*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 4 & fownu6 == 6 & spmu_resources - spmu_actc + 4*f(ftotval) + 6*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 5 & fownu6 == 6 & spmu_resources - spmu_actc + 5*f(ftotval) + 6*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 6 & fownu6 == 6 & spmu_resources - spmu_actc + 6*f(ftotval) + 6*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 7 & fownu6 == 6 & spmu_resources - spmu_actc + 7*f(ftotval) + 6*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 8 & fownu6 == 6 & spmu_resources - spmu_actc + 8*f(ftotval) + 6*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 9 & fownu6 == 6 & spmu_resources - spmu_actc + 9*f(ftotval) + 6*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 10 & fownu6 == 6 & spmu_resources - spmu_actc + 10*f(ftotval) + 6*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 11 & fownu6 == 6 & spmu_resources - spmu_actc + 11*f(ftotval) + 6*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 12 & fownu6 == 6 & spmu_resources - spmu_actc + 12*f(ftotval) + 6*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 13 & fownu6 == 6 & spmu_resources - spmu_actc + 13*f(ftotval) + 6*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 14 & fownu6 == 6 & spmu_resources - spmu_actc + 14*f(ftotval) + 6*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 15 & fownu6 == 6 & spmu_resources - spmu_actc + 15*f(ftotval) + 6*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 16 & fownu6 == 6 & spmu_resources - spmu_actc + 16*f(ftotval) + 6*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 17 & fownu6 == 6 & spmu_resources - spmu_actc + 17*f(ftotval) + 6*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 18 & fownu6 == 6 & spmu_resources - spmu_actc + 18*f(ftotval) + 6*c(ftotval) < spmu_povthreshold) | 
            (spmu_numkids == 19 & fownu6 == 6 & spmu_resources - spmu_actc + 19*f(ftotval) + 6*c(ftotval) < spmu_povthreshold) |
            (spmu_numkids >= 20 & fownu6 == 6 & spmu_resources - spmu_actc + 20*f(ftotval) + 6*c(ftotval) < spmu_povthreshold))

【问题讨论】:

  • 您应该熟悉循环。我建议使用谷歌搜索“控制语句”以及您选择的语言。 :)
  • 包含您的代码很好,但与之前更讨厌的评论者所说的相反,我们能够运行代码也很重要。通常,最好的方法是制作一个可重现的最小示例来说明中心问题,而不是为您的项目提供完整的代码。一些指导在这里:stackoverflow.com/a/28481250
  • 同意@Frank - 正如您所看到的,只要有足够的信息,这里大多数 人都会真正努力提供帮助。但我们只能用我们得到的东西工作。就我自己而言,虽然我感谢您努力提高问题的清晰度,但实际上我发现现在更难理解您的问题是什么。请仔细阅读弗兰克提供的链接,然后花一些时间尽可能地使问题变得更好。然后,您将获得良好答案的回报
  • 您可能希望pmin 在您的计算中的某个位置。 pmin( 1000 , c( 10 , 100 , 1000 , 10000 , 100000 ) )

标签: r math survey


【解决方案1】:

我愿意……

f = function(x) if (x > 1000) exp(seq(log(x), log(1000), by=log(.45))) else x

# example
f(100000)
[1] 100000.000  45000.000  20250.000   9112.500   4100.625   1845.281

seq(from, to, by) 不会传递 to(显示超过 1000 的下一个数字),但如果您需要,只需将其添加到向量的末尾(再次除以 0.45)。

explog 业务来自..

log(x*.45^y) = log(x) + y*log(.45)

【讨论】:

  • 感谢您的帮助!
  • 其实我解释的不太对。我发布了我的代码。你介意再看看吗?
【解决方案2】:

这是一个非常适合递归函数的任务:

f <- function(x, coeff, threshold){
    t <- tail(x,1)
    if (t*coeff<threshold)
        return(x)
    f(c(x, t*coeff), coeff, threshold)
}

f(x = 100000, coeff = 0.45, threshold = 1000)

#[1] 100000.000  45000.000  20250.000   9112.500   4100.625   1845.281

【讨论】:

  • 感谢您的帮助,但我没有充分解释这种情况。我更新了我的帖子。你介意再看看吗?
【解决方案3】:

这是你想要的吗?

MultiplyUntil <- function(x,y,threshhold) {
    repeat
    {
        print(x)
        x <- x * y
        if (x < threshhold)
        {
            print(x)
            break
        }
        if (x > threshhold & y > 1)
        {
            print("Will go to infinity")
            break
        }
    }
}

在您给定的示例中,x &lt;- xy &lt;- .45threshhold &lt;- 1000

# with x = 10000
MultiplyUntil(10000, .45, 1000)
# [1] 10000
# [1] 4500
# [1] 2025
# [1] 911.25

【讨论】:

  • 您介意再看一下吗?我发布了我的代码并进行了澄清。谢谢!
【解决方案4】:

首先,我们定义一个函数,在不超过给定阈值的情况下,将给定的起始值乘以比率r(以创建几何级数)尽可能多的次数

f = function(start, r, threshold){
  N = floor(log(threshold/start) / log(r))
  r^(0:N) * start
}

现在,将其应用于您的示例

"x*1.45 直到达到 1000,如果达到 1000 则停止。"

对于一个起始值 (x),比如说 10,我们可以这样做

x = 10    
f(x, 1.45, 1000)
# [1]  10.00000  14.50000  21.02500  30.48625  44.20506  64.09734  92.94114
# [8] 134.76466 195.40876 283.34269 410.84691 595.72802 863.80562

如果您还想在系列中包含下一个值,即第一个超过阈值的值,您可以在函数中使用 ceiling 而不是 floor

【讨论】:

  • 不幸的是,我不清楚。你介意再看一下吗?
猜你喜欢
  • 2022-06-13
  • 1970-01-01
  • 1970-01-01
  • 2020-05-31
  • 2021-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多