# 在R中生成一个向量，并将其插入到一个堆叠的框架中[英] generate a vector in R and insert it in a stacked frame ### 问题描述

```myframe
sex = F

q8
cars   N   U   Y
1  35  31  10
2  34  23   7
3 132 109  35
4  38  36  14
5   7   5   2

, , sex = M

q8
cars   N   U   Y
1  49  22  16
2  24  13   8
3 136  52  33
4  37  31  32
5  15  10   4

f = c(myframe[1:15])
m = c(myframe[16:30])

S <- stack(data.frame(f,m))

names(S)=c("num","gender")
group=c("1","1","1","2","2","2","3","3","3","4","4","4","5","5","5","6","6","6","1","1","1","2","2","2","3","3","3","4","4","4","5","5","5")

num=S\$num
gender=S\$gender
twoway.df=data.frame(num,group,gender)
twoway.df
1   1 35 f
2   1 31 f
3   1 10 f
4   2 24 f
5   2 13 f
....
```

## 推荐答案

```myframe <- as.table(array(c(35, 34, 132, 38, 7, 31, 23, 109, 36, 5,
10, 7, 35, 14, 2, 49, 24, 136, 37, 15,
22, 13, 52, 31, 10, 16, 8, 33, 32, 4),
dim=c(5, 3, 2),
dimnames=list(cars=1:5, q8=c("N","U","Y"),
sex=c("F","M"))))
library(reshape)
melt(myframe)
```

### 问题描述

I want to stack a frame but I think I do not use the right way...

```myframe
sex = F

q8
cars   N   U   Y
1  35  31  10
2  34  23   7
3 132 109  35
4  38  36  14
5   7   5   2

, , sex = M

q8
cars   N   U   Y
1  49  22  16
2  24  13   8
3 136  52  33
4  37  31  32
5  15  10   4

f = c(myframe[1:15])
m = c(myframe[16:30])

S <- stack(data.frame(f,m))

names(S)=c("num","gender")
group=c("1","1","1","2","2","2","3","3","3","4","4","4","5","5","5","6","6","6","1","1","1","2","2","2","3","3","3","4","4","4","5","5","5")

num=S\$num
gender=S\$gender
twoway.df=data.frame(num,group,gender)
twoway.df
1   1 35 f
2   1 31 f
3   1 10 f
4   2 24 f
5   2 13 f
....
```

could you help me do it better ?

## 推荐答案

To transform a table into a data.frame, the base function as.data.frame.table should work.

Here is, however, how I would do:

```myframe <- as.table(array(c(35, 34, 132, 38, 7, 31, 23, 109, 36, 5,
10, 7, 35, 14, 2, 49, 24, 136, 37, 15,
22, 13, 52, 31, 10, 16, 8, 33, 32, 4),
dim=c(5, 3, 2),
dimnames=list(cars=1:5, q8=c("N","U","Y"),
sex=c("F","M"))))
library(reshape)
melt(myframe)
```

for getting a data.frame with all variables. Should you only want to keep q8 and sex as factors in your data.frame, use melt(myframe)[,-1] instead.