我正在做一个分析,我想将数据打印从水平更改为垂直。例如,当我执行以下操作时,这是我当前看到的输出类型:

> with(mtcars,sapply(split(mpg,cyl),mean))
       4        6        8
26.66364 19.74286 15.10000


我希望将输出组织成这样:

4    26.66364
6    19.74286
8    15.10000


有没有办法做到这一点?

最佳答案

您可以使用stack()

with(mtcars, stack(sapply(split(mpg, cyl), mean)))
#    values ind
#1 26.66364   4
#2 19.74286   6
#3 15.10000   8


但是aggregate()对于这个问题可能会更好

aggregate(mpg ~ cyl, mtcars, mean)
#  cyl      mpg
#1   4 26.66364
#2   6 19.74286
#3   8 15.10000


同样,如果您选择tapply(),则sapply()可能比sapply()更合适。

stack(with(mtcars, tapply(mpg, cyl, mean)))
#    values ind
#1 26.66364   4
#2 19.74286   6
#3 15.10000   8


使用,如果返回值仅在一行上,您将获得一个向量,因此您可能需要使用其他函数进行计算。

关于r - 垂直打印R向量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25223977/

10-09 17:23