应用输出问题。应该是一个数据框,但它不是

问题描述 投票:0回答:1

我在 R 中有一个函数,它返回一个包含 3 列的数据框。这是此函数的输出示例:

Vasicek(1)
         Data         DU      Yield
1  2019-01-02 0.06027397 0.06428780
2  2019-01-02 0.16712329 0.06334294
3  2019-01-02 0.33698630 0.06336400
4  2019-01-02 0.69315068 0.06531485
5  2019-01-02 1.03013699 0.06833951
6  2019-01-02 1.38082192 0.07188101
7  2019-01-02 2.06849315 0.07848185
8  2019-01-02 2.75616438 0.08374200
9  2019-01-02 4.13424658 0.09019618
10 2019-01-02 5.51232877 0.09296135

但是,当我使用 sapply 调用此函数时,它返回以下类的对象:

class(Vas)
[1] "matrix" "array" 

我无法像上面函数的输出那样将这个矩阵转换成数据帧。

这是

的输出示例
Vas = sapply(1:3, Vasicek)

Vas
      [,1]      [,2]      [,3]     
Data  Numeric,5 Numeric,5 Numeric,5
DU    Numeric,5 Numeric,5 Numeric,5
Yield Numeric,5 Numeric,5 Numeric,5

和获得

Vas
的代码

structure(list(structure(c(17898, 17898, 17898, 17898, 17898), class = "Date"), 
    c(1.38082191780822, 4.13424657534247, 0.167123287671233, 
    1.03013698630137, 2.06849315068493), c(0.0718810119824251, 
    0.0901961821101735, 0.0633429401279062, 0.0683395111286434, 
    0.0784818512451727), structure(c(17899, 17899, 17899, 17899, 
    17899), class = "Date"), c(2.06575342465753, 0.164383561643836, 
    0.0575342465753425, 2.75342465753425, 0.334246575342466), 
    c(0.0787273534815518, 0.063925820453163, 0.0641495440691283, 
    0.084047539923232, 0.0639744930251083), structure(c(17900, 
    17900, 17900, 17900, 17900), class = "Date"), c(2.75068493150685, 
    1.37534246575342, 1.02465753424658, 1.71232876712329, 0.161643835616438
    ), c(0.0820164309541394, 0.0726562058606185, 0.0700359442531045, 
    0.075140202621196, 0.0636353259162377)), .Dim = c(3L, 3L), .Dimnames = list(
    c("Data", "DU", "Yield"), NULL))

关于如何将此输出转换为具有 3 列的数据框有什么建议吗?

r dataframe sapply
1个回答
0
投票

考虑使用

lapply
bind_rows
。在这里查看答案:How to combine result of lapply to a data.frame?

library(dplyr)
Vas <- lapply(1:3, Vasicek) %>% bind_rows()
© www.soinside.com 2019 - 2024. All rights reserved.