如何将colSums转换为R到数据帧

san*_*oku 2 r dataframe

我需要获取所有列的col sum,并将结果保存在一个具有colnames和它们的和为两列的数据框中。但是,如果我这样做,列名似乎将成为索引,而不是col本身。

demo=data.frame(a=runif(10),b=runif(10,max=2),c=runif(10,max=3))
as.data.frame(colSums(demo))
Run Code Online (Sandbox Code Playgroud)

不良结果:

   colSums(demo)
a      4.083571
b     11.698794
c     14.082574
Run Code Online (Sandbox Code Playgroud)

预期结果:

colname colSums(demo)
a      4.083571
b     11.698794
c     14.082574
Run Code Online (Sandbox Code Playgroud)

如何在保持原样的同时向左侧的列添加标题?谢谢。

RHe*_*tel 5

一种可能是将结果与 t()

data.frame(t(colSums(demo)))
Run Code Online (Sandbox Code Playgroud)
                    a        b        c
colSums.demo. 5.782475 10.46739 18.46751
Run Code Online (Sandbox Code Playgroud)

要更改输出中行的名称,我们可以使用rownames,例如这样:

`rownames<-`(data.frame(t(colSums(demo))), "myColsum")
Run Code Online (Sandbox Code Playgroud)
             a        b        c
myColsum 5.782475 10.46739 18.46751
Run Code Online (Sandbox Code Playgroud)


bgo*_*dst 5

您可以使用stack()和实现所需的输出setNames()

setNames(nm=c('colname','colSums(demo)'),stack(colSums(demo))[2:1]);
##   colname colSums(demo)
## 1       a      4.083571
## 2       b     11.698794
## 3       c     14.082574
Run Code Online (Sandbox Code Playgroud)


Sow*_*ian 5

> demo = data.frame(a=runif(10),b=runif(10,max=2),c=runif(10,max=3))
> df <- data.frame(colname = names(demo),colSums_demo=colSums(demo))
> print(df, row.names=F)
  colname colSums_demo
        a     4.754546
        b    12.488904
        c    18.152095
Run Code Online (Sandbox Code Playgroud)