输出R代码的功能

时间:2013-05-17 19:20:39

标签: r

我有一个长格式的数据框,如下所示:

longData <- mtcars[1:5, 1:4]
library(reshape2)
melt(longData)

Using  as id variables
   variable value
1       mpg  21.0
2       mpg  21.0
3       mpg  22.8
4       mpg  21.4
5       mpg  18.7
6       cyl   6.0
7       cyl   6.0
8       cyl   4.0
9       cyl   6.0
10      cyl   8.0
11     disp 160.0
12     disp 160.0
13     disp 108.0
14     disp 258.0
15     disp 360.0
16       hp 110.0
17       hp 110.0
18       hp  93.0
19       hp 110.0
20       hp 175.0

是否有可能制作一个能够吐出R代码的函数,该代码将以宽格式构建相同的数据帧?注意:我不想将longData转换为宽格式,我想以编程方式输出R代码,将数据帧转换为宽格式,如下所示:

someFunctionToOutputWideCode()

data.frame(mpg = c(21.0, 21.0, 22.8, 21.4, 18.7),
           cyl = c(6, 6, 4, 6, 8),
           disp = c(160, 160, 108, 258, 360),
           hp = c(110, 110, 93, 110, 175))

1 个答案:

答案 0 :(得分:3)

我不认为这是人们谈论长格式时的意思,但是如何实现你想要的呢?

dput(as.data.frame(t(longData)))
# structure(list(`Mazda RX4` = c(21, 6, 160, 110), `Mazda RX4 Wag` = c(21, 
# 6, 160, 110), `Datsun 710` = c(22.8, 4, 108, 93), `Hornet 4 Drive` = c(21.4, 
# 6, 258, 110), `Hornet Sportabout` = c(18.7, 8, 360, 175)), .Names = c("Mazda RX4", 
# "Mazda RX4 Wag", "Datsun 710", "Hornet 4 Drive", "Hornet Sportabout"
# ), row.names = c("mpg", "cyl", "disp", "hp"), class = "data.frame")

重新编辑OP:同样的想法 - 将其转换为您喜欢的任何格式,然后dput

dput(dcast(melt(longData), 1:5 ~ variable))
# structure(list(`1:5` = 1:5, mpg = c(21, 21, 22.8, 21.4, 18.7), 
#     cyl = c(6, 6, 4, 6, 8), disp = c(160, 160, 108, 258, 360), 
#     hp = c(110, 110, 93, 110, 175)), .Names = c("1:5", "mpg", 
# "cyl", "disp", "hp"), row.names = c(NA, -5L), class = "data.frame")