2014-10-28 57 views
0

我嘗試創建一個函數(稍後將用於使用閃亮的r)。 此刻我無法將數據結果存儲在數據框中。 到目前爲止,我已經創建了下面的代碼:將輸出保存在data.frame中,用於if-else語句

f_expccm <- function(n,h,m,rr,dr,mc,ac) { 


for(i in 1:6) { 

eccm[i]<- vector(length=1) 

if(i==1){ 

    eccm[i] <- -ac 
print(eccm[i]) 


} 
else{ 


x <- h*n 
nm <- x*m 
pc <- nm-mc 
crr <- 1*rr^(i-1) 
cdr <- 1/(1+dr)^(i-1) 

    eccm[i] <- pc*cdr*crr 
print(eccm[i]) 



} 

output <- cbind(eccm[i]) 
} 

} 
    output 
    qt <- f_expccm(10,250,.4,0.95,0.10,10,500) 

我期待出現以下條目的輸出data.frame:

[1] -500 
    [1] 855 
    [1] 738.4091 
    [1] 637.7169 
    [1] 550.7555 
    [1] 475.6525 

但是我只能得到這個,如果我添加打印功能(據我所知不保存結果...):

任何幫助將不勝感激!!! 此致敬禮,

+0

當您使用return語句時,函數將退出! – Henrik 2014-10-28 12:08:13

+0

謝謝@Henrik,但是當我刪除它時,數據幀(輸出)仍然是空的 – user3532423 2014-10-28 12:15:50

回答

0

這是你正在尋找的行爲?

f_expccm <- function(n,h,m,rr,dr,mc,ac) { 

    eccm <- vector(length=6) 
    eccm[1] <- -ac 

    for(i in 2:6) { 
    x <- h*n 
    nm <- x*m 
    pc <- nm-mc 
    crr <- 1*rr^(i-1) 
    cdr <- 1/(1+dr)^(i-1) 

    eccm[i] <- pc*cdr*crr 
    } 
    df <- data.frame(eccm) 
    return(df) 
} 

> qt <- f_expccm(10,250,.4,0.95,0.10,10,500) 
> qt 
    eccm 
1 -500.0000 
2 855.0000 
3 738.4091 
4 637.7169 
5 550.7555 
6 475.6525 
+0

謝謝。是的,這是它。不過,我想直接保存輸出作爲data.frame - 這可能嗎? 理想情況下,我想格式化這個返回(eccm)向量作爲data.frame - 這可能嗎? – user3532423 2014-10-28 12:53:23

+0

是的,我只是編輯答案,而不是返回一個數據框 – Henrik 2014-10-28 15:26:36