2016-11-17 2 views
-5

다음 코드와 관련하여 문제가 있습니다. 나는 v1 = (106.56, 247.97, 417.00, 505.70)의 값을 얻지 만, 나는 그것을 (106.56, 247.97, 417.00, 0)으로하고있다. 나는 그 문제가 무엇인지 알 수 없다. 누군가 나를 도울 수 있습니까? 미리 감사드립니다.R의 오류 : 출력이 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]]; 
} 
+0

귀하의 질문에 답하는 데 도움이 될 계산 대상에 대한 일반적인 설명 –

답변

1

나는 당신의 논리 아무 생각이 없지만, 코드 단계별 통해 실행하는 것은 x1[i] 당신이있어 의미, 65, i 4 인 경우 여기

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

를 시작하여 문제를 보여줍니다 벡터 t1[[4]]의 (65-65) 요소를 추출합니다. R에는 0 번째 요소가 없습니다. 즉, 아무 값도 반환되지 않습니다 (길이 0의 벡터 인 숫자 (0)을 얻습니다. 즉 공백).

모든 것이 잘못되어 있습니다.