【问题标题】:Error in R: Having output to be equal to zero [closed]R中的错误:输出等于零[关闭]
【发布时间】:2016-11-17 09:45:29
【问题描述】:

我对以下代码有一些问题。我应该得到 v1 = ( 106.56, 247.97, 417.00, 505.70) 的值,但我得到的是 ( 106.56, 247.97, 417.00, 0)。我无法弄清楚问题是什么。有人可以帮我吗?先感谢您。

a <- 0.0008; 
b <- 0.00011; 
c <- 1.095; 
m <- b/log(c, base=exp(1)); 
z <- (-a/log(c, base=exp(1)))+1;
e <- exp(1);

x <- 30;
k <- 0:69;
del <- 0.05;
v <- e^(-del);
j <- m*c^x;
j1 <- m*c^(x+k);
p <- e^(-a*k+j-j*c^k);
q1 <- e^j1*gamma(z)*(j1^(1-z))*(pgamma(c, z, j1)-pgamma(1, z, j1)); 
q2 <- 1-e^(-a-j1*c+j1)-q1; 
p1 <- p*q1;
p2 <- p*q2;
p3 <- p1+p2;
apbw <- sum(p3*v^(k+1)); 
app <- e^j*sum(v^k*e^(-a*k-j*c^k)); 
pw <- 1000*apbw/app; 
apb <- cumsum(p2*v^(k+1));
apbn <- apb [35]; 
app <- e^j*cumsum(v^k*e^(-a*k-j*c^k));
appn <- app[35];
pn <- 1000*apbn/appn;

k <- vector('list', 4);
p <- vector('list',4);
q <- vector('list',4);
j1 <- vector('list',4);
q1 <- vector('list',4);
p1 <- vector('list',4);
p2 <- vector('list',4);
p3 <- vector('list',4);
w <- vector('list',4);
wa <- vector('list',4);
t1 <- vector('list',4);
t2 <- vector('list',4);
ta <- vector('list',4);
nta <- vector('list',4);
vb <- vector('list',4);
vt <- vector('list',4);
v1 <- vector('list',4);
d <- vector('list',4);

t <- c(10, 20, 30, 35);
x1 <- x + t;

for(i in 1:4)
{
j[[i]] <- m*c^x1[i];
k[[i]] <- 0:(100 - x1[i] - 1);
j1[[i]] <- m*c^(x1[i]+k[[i]]);
p[[i]] <- e^(-a*k[[i]]+j[[i]]-j[[i]]*c^k[[i]]); 
q[[i]] <- e^j1[[i]]*gamma(z)*(j1[[i]]^(1-z))*(pgamma(c, z, j1[[i]])-  pgamma(1,  z, j1[[i]]));
q1[[i]] <- 1-e^(-a-j1[[i]]*c+j1[[i]])-q[[i]];
p1[[i]] <- p[[i]]*q[[i]];
p2[[i]] <- p[[i]]*q1[[i]];
p3[[i]] <- p1[[i]]+p2[[i]];
w[[i]] <- sum(p3[[i]]*v^(k[[i]]+1)) ;
wa[[i]] <- e^j[[i]]*sum(v^k[[i]]*e^(-a*k[[i]]-j[[i]]*c^k[[i]]));
t1[[i]] <- cumsum(p2[[i]]*v^(k[[i]]+1));
t2[[i]] <- t1[[i]][65-x1[i]] ;
ta[[i]] <- e^j[[i]]*cumsum(v^k[[i]]*e^(-a*k[[i]]-j[[i]]*c^k[[i]]));
nta[[i]] <- ta[[i]][65-x1[i]];
vb[[i]] <- round(1000*w[[i]]-(pw*wa[[i]]), 2);
vt[[i]] <- round(1000*t2[[i]]-(pn*nta[[i]]), 2);
v1[[i]] <- vb[[i]]+vt[[i]];  
}  

【问题讨论】:

  • 对您尝试计算的内容的一般描述将有助于回答您的问题

标签: r


【解决方案1】:

我不知道您的逻辑,但逐步运行您的代码会显示您的问题从这里开始

t2[[i]] <- t1[[i]][65-x1[i]]

i 为 4 时,x1[i] 为 65,这意味着您正在提取向量 t1[[4]] 的 (65-65) 元素。在 R 中,没有第 0 个元素,意味着没有返回值(你得到 numeric(0),它是一个长度为 0 的向量,即:空)。

从那里开始一切都变糟了。

【讨论】:

    猜你喜欢
    • 2016-04-06
    • 2017-01-25
    • 2021-11-27
    • 1970-01-01
    • 2022-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-09
    相关资源
    最近更新 更多