2017-09-26 73 views
0

我想存储下面的函数的结果, 我只能打印结果,但不能保存为csv格式。我如何将这些结果保存到csv文件中? 在此先感谢!如何存储函数的结果?

calEAD=function(loan, R, final, startdate, first_enddate,enddate){ 
    I=loan*R 
    start=as.Date(startdate) 
    firstend=as.Date(first_enddate) 
    p=firstend-start 
    period=as.numeric(p)/365 
    EADabc=0 
    b=enddate-2017 
    for(i in (0:b)){ 
    EADabc=I/((1+R)**(i+period))+EADabc 
    print(EADabc)} 
} 

calEAD1=calEAD(6690012.88,0.0588,6690012.88, '2016-12-31','2017-08-29',2022) 
calEAD2=calEAD(385000.12,0.0588,385000.12, '2016-12-31','2017-09-11',2023) 

回答

2

看来你想保持EADabc的每个中间结果在for循环中。在这种情况下,你可以将它们串联到这样的载体:

calEAD=function(loan, R, final, startdate, first_enddate,enddate){ 
    I=loan*R 
    start=as.Date(startdate) 
    firstend=as.Date(first_enddate) 
    p=firstend-start 
    period=as.numeric(p)/365 
    EADabc=0 
    b=enddate-2017 

    # Define an empty vector 
    result = c() 
    for(i in (0:b)){ 
     EADabc=I/((1+R)**(i+period))+EADabc 

     # Append the current result to the vector 
     result = c(result,EADabc) 
    } 

    # Make the function return this vector 
    result 
} 

结果:

calEAD1=calEAD(6690012.88,0.0588,6690012.88, '2016-12-31','2017-08-29',2022) 
calEAD2=calEAD(385000.12,0.0588,385000.12, '2016-12-31','2017-09-11',2023) 

> calEAD1 
[1] 378809 736581 1074484 1393622 1695037 1979713 
> calEAD2 
[1] 21755.57 42302.95 61709.24 80037.81 97348.51 113697.87 129139.28 

如果你想将它们保存到一个CSV文件,执行:

write.csv(x = calEAD1, file = "test.csv") 
+0

谢谢!它完美的工作!还有一个问题:我如何将所有EAD1 EAD2 ... EAD5结果保存到一个单独的csv文件中? – Francesco

+0

他们都是一样的长度? csv文件通常存储表格数据(列和行),其中每列的行数相同。如果它们的长度相同,则:'allEAD = data.frame(calEAD1,calEAD2,... etc)',然后用'write.csv'写入csv –

0

你可以使用write.csv或write.table函数。

for(i in (0:b)) 
{ 
EADabc=I/((1+R)**(i+period))+EADabc 
write.table(EADabc, file = "file_name.csv",sep = ",", col.names = T, append =T) 

} 

或者 write.csv(EADabc,文件= “file_name.csv”,row.names = FALSE)