我有两个功能:
c <- function(i, n=2009, t=2000){
vect1 <- vector('numeric', length(t:n))
w <- n-t
for(q in 0:w){
a <- 1/((1+i)^(q+1))
b <- q+t
vect1[q+1] <- a
}
return(vect1)
}
和
p <- function(i, n=2009, t=2000){
w <- n-t
for(q in 0:w){
a <- c(i, n, q+t)
print(a)
}
}
在定义两个函数并运行p(0.10)时,获得类似于以下的表,但是它被打印。我需要data.frame中的输出,以便我可以将其与其他数据连接。
0.909090909 0 0 0 0 0 0 0 0 0
0.826446281 0.909090909 0 0 0 0 0 0 0 0
0.751314801 0.826446281 0.909090909 0 0 0 0 0 0 0
0.683013455 0.751314801 0.826446281 0.909090909 0 0 0 0 0 0
0.620921323 0.683013455 0.751314801 0.826446281 0.909090909 0 0 0 0 0
0.56447393 0.620921323 0.683013455 0.751314801 0.826446281 0.909090909 0 0
etc.
答案 0 :(得分:1)
你可以做这样的事情,这会给你一个单列的数据框。我不确定您要尝试做什么,或者您想要加入的其他数据。也许它会帮助你到达你想去的地方:
cFunc <- function(i, n=2009, t=2000){
vect1 <- vector('numeric', length(t:n))
w <- n-t
for(q in 0:w){
a <- 1/((1+i)^(q+1))
b <- q+t
vect1[q+1] <- a
}
return(vect1)
}
p <- function(i, n=2009, t=2000){
w <- n-t
a1 <- list()
for(q in 0:w){
q <- q+1
a1[[q]] <- cFunc(i, n, q+t)
}
return(a1)
}
listp <- p(0.10)
listp <- lapply(listp, as.data.frame)
listp <- data.table::rbindlist(listp, fill = TRUE)
结果:
> head(listp)
X[[i]]
1: 0.9090909
2: 0.8264463
3: 0.7513148
4: 0.6830135
5: 0.6209213
6: 0.5644739