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