在R中跨多个大型数据帧进行计算

时间:2019-09-26 09:21:53

标签: r for-loop

我有一组6个大型矩阵,每个矩阵具有相同的列数(当前均以不同的方式标记)和相同数量的行(均以相同的方式标记)。我想对数据框进行一些计算以创建新矩阵。

我要运行以下计算:对于ndf1$[,1:i]中的sqrt(n)行,并将其添加到其他5个矩阵中所有等效单元格的值。

因此,如果我有两个样本矩阵,例如:

 library(tibble)
 df1 <- tribble("Value", ~A, ~B, ~C, ~D,
      "A", .34, .12, 1, 0,
      "B", .89, .2, 0, 0,
      "C", 1, .37, 1, .02,
      "D", 0, 0, .21, 0)

 df2 <- tribble("Value", ~A, ~B, ~C, ~D,
      "A", .21, 0, 1, 0,
      "B", .54, .72, 0, 1,
      "C", .21, .7, 0, 0,
      "D", .45, .03, 0, .12)

我想对df1$A中的每一行取每个值的平方根,并将其添加到df2$A中的等效值中,以创建一个新矩阵。

1 个答案:

答案 0 :(得分:1)

您可以将data.frame(或tibble)一起添加:

sqrt(df1[, -1]) + sqrt(df2[, -1])

          A         B         C         D
1 1.0413528 0.3464102 2.0000000 0.0000000
2 1.6782450 1.2957417 0.0000000 1.0000000
3 1.4582576 1.4449363 1.0000000 0.1414214
4 0.6708204 0.1732051 0.4582576 0.3464102

我还将您的数据从"Value"更改为~Value

df1 <- tribble(~Value, ~A, ~B, ~C, ~D,
               "A", .34, .12, 1, 0,
               "B", .89, .2, 0, 0,
               "C", 1, .37, 1, .02,
               "D", 0, 0, .21, 0)

df2 <- tribble(~Value, ~A, ~B, ~C, ~D,
               "A", .21, 0, 1, 0,
               "B", .54, .72, 0, 1,
               "C", .21, .7, 0, 0,
               "D", .45, .03, 0, .12)