【问题标题】:Assign values to matrix with index of other data frame将值分配给具有其他数据框索引的矩阵
【发布时间】:2016-04-08 03:19:04
【问题描述】:

我的数据框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]]

【问题讨论】:

  • 我不认为你需要填满一张桌子 - 你可以一次完成 - with(D, tapply(fit, list(distance,dg), FUN=as.character) )
  • 是的!它有效..谢谢~

标签: r matrix indexing assign


【解决方案1】:

我们可以从library(reshape2)使用acast

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

或与reshape 来自base R

reshape(D, idvar="distance", timevar="dg", direction="wide")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-04
    • 2011-10-30
    • 2014-01-05
    • 1970-01-01
    • 2019-03-06
    • 1970-01-01
    • 2018-12-02
    相关资源
    最近更新 更多