/ / Plan amortyzacji z wykorzystaniem pakietu finansowego - r, podsumowanie, finansowe

Harmonogram amortyzacji przy użyciu pakietu finansowego - r, podsumowanie, finansowe

Jak czytać harmonogram amortyzacji opracowany przez tvm() w opakowaniu financial w ramkę danych?

Przykładowy kod

y=tvm(pv=10000,i=10,n=10,pmt=NA)
summary.tvm(y)

Wyniki

> summary.tvm(y)

Amortization Table

Bal    Int   Prin    PMT
1     9037  83.33   -963  -1046
2     8066  75.31   -971  -1046
3     7087  67.22   -979  -1046
4     6099  59.06   -987  -1046
5     5104  50.83   -996  -1046
6     4100  42.53  -1004  -1046
7     3088  34.17  -1012  -1046
8     2067  25.73  -1021  -1046
9     1038  17.22  -1029  -1046
10       0   8.65  -1038  -1046
Total      464.04 -10000 -10464

Oczywiście to podsumowanie muszę przypisać do ramki danych, gdy sprawdzam kod źródłowy funkcji summary.tvm()pokazuje to.

> summary.tvm
function (object, row = 1, ...)
{
cat("nAmortization Tablenn")
x = object
row = x[row, ]
n = row[2]
a = row[7]
i = row[1]/(100 * row[8])
pv = row[3]
fv = row[4]
pmt = row[5]
days = row[6]
pyr = row[8]
bal = pv + a * pmt
res = c()
for (k in 1:(n - a)) {
if (k == 1) {
int = bal * i * (days/(360/pyr))
prin = pmt + int
bal = bal + prin
prin = prin + a * pmt
res = rbind(res, c(bal, int, prin, pmt * (1 + a)))
}
else {
int = bal * i
prin = pmt + int
bal = bal + prin
res = rbind(res, c(bal, int, prin, pmt))
}
}
res = rbind(res, c(NA, sum(res[, 2]), sum(res[, 3]), sum(res[,
4])))
colnames(res) = c("Bal", "Int", "Prin", "PMT")
rownames(res) = c(1:(n - a), "Total")
print(round(res, 2), na.print = "")
invisible(res)
}
<bytecode: 0x000000001cd42768>
<environment: namespace:financial>

Myślę, że muszę jakoś wyodrębnić res i przypisz go do ramki danych. Jak to zrobić? Sprawdziłem klasę summary.tvm wyjście, pokazuje a matrix.

Odpowiedzi:

1 dla odpowiedzi № 1

Po prostu przypisz wynik do obiektu. Część „niewidoczna” po prostu blokuje drukowanie obiektu, jeśli nie jest on przypisany do zmiennej.

out <- summary.tvm(y)

Rezultatem powinna być matryca, co sprawia, że ​​uważasz, że powinna być czymś innym? Jeśli chcesz to data.frame, spróbuj as.data.frame(out).

W krótkim przykładzie:

> smr <- function(x) {
+   xy <- matrix(1:x, nrow = 1)
+   print(xy)
+   invisible(xy)
+ }
> out <- smr(10)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    1    2    3    4    5    6    7    8    9    10
> as.data.frame(out)
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1  1  2  3  4  5  6  7  8  9  10