如何根据data.frame

时间:2018-04-03 05:21:49

标签: r

我有以下数据框(dat)和矩阵(dat.m

dat <- structure(list(mpg = c(21, 21, 22.8, 21.4, 18.7, 18.1), cyl = c(6, 
6, 4, 6, 8, 6), disp = c(160, 160, 108, 258, 360, 225), hp = c(110, 
110, 93, 110, 175, 105), drat = c(3.9, 3.9, 3.85, 3.08, 3.15, 
2.76), wt = c(2.62, 2.875, 2.32, 3.215, 3.44, 3.46), qsec = c(16.46, 
17.02, 18.61, 19.44, 17.02, 20.22), vs = c(0, 0, 1, 1, 0, 1), 
    am = c(1, 1, 1, 0, 0, 0), gear = c(4, 4, 4, 3, 3, 3), carb = c(4, 
    4, 1, 1, 2, 1)), .Names = c("mpg", "cyl", "disp", "hp", "drat", 
"wt", "qsec", "vs", "am", "gear", "carb"), row.names = c("Mazda RX4", 
"Mazda RX4 Wag", "Datsun 710", "Hornet 4 Drive", "Hornet Sportabout", 
"Valiant"), class = "data.frame")

dat
#>                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
#> Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
#> Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
#> Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
#> Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
#> Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
#> Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

dat.m <- structure(c(21, 21, 22.8, 21.4, 18.7, 18.1, 6, 6, 4, 6, 8, 6, 
160, 160, 108, 258, 360, 225, 110, 110, 93, 110, 175, 105, 3.9, 
3.9, 3.85, 3.08, 3.15, 2.76, 2.62, 2.875, 2.32, 3.215, 3.44, 
3.46, 16.46, 17.02, 18.61, 19.44, 17.02, 20.22, 0, 0, 1, 1, 0, 
1, 1, 1, 1, 0, 0, 0, 4, 4, 4, 3, 3, 3, 4, 4, 1, 1, 2, 1), .Dim = c(6L, 
11L), .Dimnames = list(NULL, NULL))

dat.m
#>      [,1] [,2] [,3] [,4] [,5]  [,6]  [,7] [,8] [,9] [,10] [,11]
#> [1,] 21.0    6  160  110 3.90 2.620 16.46    0    1     4     4
#> [2,] 21.0    6  160  110 3.90 2.875 17.02    0    1     4     4
#> [3,] 22.8    4  108   93 3.85 2.320 18.61    1    1     4     1
#> [4,] 21.4    6  258  110 3.08 3.215 19.44    1    0     3     1
#> [5,] 18.7    8  360  175 3.15 3.440 17.02    0    0     3     2
#> [6,] 18.1    6  225  105 2.76 3.460 20.22    1    0     3     1

我想要做的是根据dat.m中的列和行名称在dat中分配列名和行名。我怎么能这样做?

datdat.m的尺寸保证相同。

最终结果看起来像dat,除非它是矩阵而不是数据框。

1 个答案:

答案 0 :(得分:3)

dimnames可以将行名称和列名称设为list,并且可以将其分配给matrix

dimnames(dat.m) <- dimnames(dat)