为if-else语句保存data.frame中的输出

时间:2014-10-28 12:01:58

标签: r function

我尝试创建一个函数(稍后将用于处理闪亮的r)。 目前我无法将我的功能结果存储在数据框中。 到目前为止,我已经创建了以下代码:

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

但是如果我添加打印功能(据我所知不保存结果......)我只能得到这个...:

任何帮助都将非常感谢!!! 最好的问候,

1 个答案:

答案 0 :(得分: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