我想将数据框“数据”的每一列除以另一个称为“基准”的数据框的每一列。但是,使用lapply并将其手动划分会得到不同的结果。我的代码中的错误在哪里?
我使用的代码是:
div <- data.frame(lapply(data, function(x) x[col(benchmark)]/benchmark))
对于前两列,这给了我以下结果...
div.A.B1 div.A.B2
1 0.7200000 0.8000000
2 0.7422680 0.8163265
3 0.7346939 0.8080808
4 0.7422680 0.8333333
5 0.7578947 0.8510638
6 0.7741935 0.8695652
7 0.7826087 0.8510638
8 0.7826087 0.8602151
9 0.7912088 0.8791209
10 0.8181818 0.8791209
...同时将“ data”的第一列除以“ benchmark”的前两列得到的结果是:
A.B1 A.B2
1 0.7200000 0.7200000
2 0.8247423 0.8163265
3 0.7653061 0.7575758
4 0.7525773 0.7604167
5 0.9473684 0.9574468
6 0.8709677 0.8804348
7 0.8804348 0.8617021
8 0.9347826 0.9247312
9 1.0989011 1.0989011
10 0.9090909 0.8791209
一些有关“数据”的示例数据:
A
1 72
2 80
3 75
4 73
5 90
6 81
7 81
8 86
9 100
10 80
对于“基准”:
B1 B2
1 100 100
2 97 98
3 98 99
4 97 96
5 95 94
6 93 92
7 92 94
8 92 93
9 91 91
10 88 91
我认为您可能想为此尝试purrr,它具有一些功能,可让您跨多个列表进行映射,这对这种情况很有帮助。在这种情况下,您可以使用类似map2_df(data, benchmark, ~.x / .y)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句