将data.frame的摘要转换为dataframe

将data.frame的摘要转换为dataframe,r,dataframe,datatable,type-conversion,summary,R,Dataframe,Datatable,Type Conversion,Summary,如何将data.frame上运行的摘要转换为data.frame本身?我需要一个data.frame作为RMarkdown中knitr::kable的输出 特别是我有这个数据帧 d <- data.frame(a=c(1,2,3), b=c(4,5,6)) ds <- summary(d) class(ds) # returns "table" 其中的代码也不起作用: df.df2 <- data.frame(unclass(summary(ds.df))

如何将data.frame上运行的摘要转换为data.frame本身?我需要一个data.frame作为RMarkdown中knitr::kable的输出

特别是我有这个数据帧

d <- data.frame(a=c(1,2,3), b=c(4,5,6))
ds <- summary(d)
class(ds)
# returns "table"
其中的代码也不起作用:

df.df2 <- data.frame(unclass(summary(ds.df)), check.names = FALSE, stringsAsFactors = FALSE)
print(df.df2)
# Output equally messed up
as.data.frame.matrix
将“Min”和统计信息的其他名称放在每个单元格中,而不是行名称:

ds.df3 <- as.data.frame.matrix(ds)
print(ds.df3)
# Returns "Min" and "1sd Qu." inside the cell
# instead of them being row names

ds.df3我们可以使用
矩阵
路径

out <- as.data.frame.matrix(ds)
row.names(out) <- NULL

如果我们需要
min
etc作为行名,则使用
sapply
循环列,并应用
summary

as.data.frame(sapply(d, summary))
-输出

out
             a             b
1 Min.   :1.0   Min.   :4.0  
2 1st Qu.:1.5   1st Qu.:4.5  
3 Median :2.0   Median :5.0  
4 Mean   :2.0   Mean   :5.0  
5 3rd Qu.:2.5   3rd Qu.:5.5  
6 Max.   :3.0   Max.   :6.0  
          a   b
Min.    1.0 4.0
1st Qu. 1.5 4.5
Median  2.0 5.0
Mean    2.0 5.0
3rd Qu. 2.5 5.5
Max.    3.0 6.0

没错,这不是预期的结果。我希望“Min”作为行名称,而不是在cell@robertspierre我不确定您需要什么格式的输出。我假设长格式不是您想要的,我需要“Min”、“1st Qu”作为行名,“a”和“b”作为列名,并且只需要单元格中的数字。是的,它可以工作。非常感谢:)如果它解决了您的问题,我们鼓励您通过单击复选标记来接受它…好吧,您链接到的帖子中的相同答案建议
do.call(cbind,lappy(d,summary))
这似乎对您的情况有效。@Ronaksha是的,但我更喜欢
summary返回的对象的真正转换(df)
as.data.frame(sapply(d, summary))
          a   b
Min.    1.0 4.0
1st Qu. 1.5 4.5
Median  2.0 5.0
Mean    2.0 5.0
3rd Qu. 2.5 5.5
Max.    3.0 6.0