使用其他数据框的索引将值分配给矩阵

时间:2016-04-08 03:19:04

标签: r matrix indexing assign

我的数据框D是这样的。

D$fit有距离(0:6)和dg(1:3)信息

D <- read.table(header = TRUE, text = "
   distance  dg fit
1         0   1 A
2         1   1 B
3         2   1 C
4         3   1 D
5         4   1 E
6         5   1 F
7         6   1 G
8         0   2 H
9         1   2 I
10        2   2 J
11        3   2 K
12        4   2 L
13        5   2 M
14        0   3 O
15        1   3 P
16        2   3 Q
17        3   3 R
")

我想为此矩阵md指定适合值,对应于距离和dg。

md <- matrix(1:21, nrow = 7)
colnames(md) <- c(1:3)
rownames(md) <- c(0:6)
md[] <- NA

   1  2  3
0 NA NA NA
1 NA NA NA
2 NA NA NA
3 NA NA NA
4 NA NA NA
5 NA NA NA
6 NA NA NA

我已尝试但未能使用此代码

cmd = expand.grid(i=seq(0,6), j = seq(1,3))
i <- seq(0,6)
j <- seq(1,3)
md[i,j] <-  D$fit[D$distance == cmd[1] & D$dg == cmd[2]]

1 个答案:

答案 0 :(得分:0)

我们可以使用acast

中的library(reshape2)
library(reshape2)
acast(D, distance~dg, value.var="fit")

reshape

中的base R
reshape(D, idvar="distance", timevar="dg", direction="wide")