如何将函数的返回转换为R中的数据帧?

时间:2017-10-16 14:39:57

标签: r function dataframe

考虑以下代码及其回报:

my_func<- function(t=4,n=100,m=0.009){
  AA<- AB<- BB<- numeric(length = t+1)

  AA[1]<- rbinom(1,n,1-m)
  AB[1]<- BB[1]<- 0

  for(step in 1:t){
    AB[step+1]<- rbinom(1,AA[step],1-m)
    BB[step+1]<- rbinom(1,AB[step],1-m)
    AA[step+1]<- rbinom(1,BB[step],1-m)
  }
  out<- cbind(AA,AB,BB)
  return(out)
}

 my_func()

     AA AB BB
 [1,] 99  0  0
 [2,]  0 99  0
 [3,]  0  0 99
 [4,] 98  0  0
 [5,]  0 96  0

我希望能够将返回值转换为数据帧,以便我可以在其他函数中使用生成的输出的一部分。如何将其转换为数据框?

提前致谢。

1 个答案:

答案 0 :(得分:0)

只需使用as.data.frame(...),如下所示:

my_func<- function(t=4,n=100,m=0.009){
  AA<- AB<- BB<- numeric(length = t+1)

  AA[1]<- rbinom(1,n,1-m)
  AB[1]<- BB[1]<- 0

  for(step in 1:t){
    AB[step+1]<- rbinom(1,AA[step],1-m)
    BB[step+1]<- rbinom(1,AB[step],1-m)
    AA[step+1]<- rbinom(1,BB[step],1-m)
  }
  out<- cbind(AA,AB,BB)
  return(as.data.frame(out))
}

> my_func()
  AA AB BB
1 99  0  0
2  0 99  0
3  0  0 99
4 98  0  0
5  0 96  0

> class(my_func())
[1] "data.frame"