将函数输出到data.frame中

时间:2018-02-25 22:06:07

标签: r

我有两个功能:

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.

1 个答案:

答案 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