R 给定某个数据帧,如何减去矩阵中的两个值?

R 给定某个数据帧,如何减去矩阵中的两个值?,r,matrix,R,Matrix,我目前正在尝试制作一个能够预测球队得分的工具。 本质上,我使用take两个变量,减去它们对应的r值。 这是我正在考虑的数据框架 每个团队A:J都有一个与之相关的“r值”: # [,1] #[1,] -0.870 8 #[2,] -0.750 7 #[3,] 2.290 2 #[4,] -0.050 5 #[5,] 0.355 4 #[6,] -0.895 9 #[7,] 3.290 1 #[8,] -0.510 6 #[9,] 0.430 3 #[

我目前正在尝试制作一个能够预测球队得分的工具。 本质上,我使用take两个变量,减去它们对应的r值。 这是我正在考虑的数据框架

每个团队A:J都有一个与之相关的“r值”:

#       [,1]
#[1,] -0.870  8
#[2,] -0.750  7  
#[3,]  2.290  2
#[4,] -0.050  5
#[5,]  0.355  4
#[6,] -0.895  9
#[7,]  3.290  1 
#[8,] -0.510  6 
#[9,]  0.430  3
#[10,] -3.290 10
我为不清楚表示歉意,但“r值”在第1列,第2列中的值对应于团队的字母(即A=1、B=2等)

关于数据帧,我尝试执行以下操作: 对于第一行,从A中减去E。对于第二行,从F中减去A,以此类推

我希望这是有道理的。我最终不确定如何以最有效的方式进行这项工作。
谢谢你的帮助

我们可以创建一个命名向量,然后使用它匹配“AwayTeam”、“HomeTeam”值并进行减法运算

nm1 <- setNames(m1[,1], LETTERS[m1[,2]])
Reduce(`-`, lapply(df1[c('AwayTeam', 'HomeTeam')], function(x) nm1[x]))
数据
m1
nm1[df1[['AwayTeam']]] - nm1[df1[['HomeTeam']]]
m1 <- structure(c(-0.87, -0.75, 2.29, -0.05, 0.3555, -0.895, 3.29, 
-0.51, 0.43, -3.29, 8, 7, 2, 5, 4, 9, 1, 6, 3, 10), .Dim = c(10L, 
2L))

df1 <- structure(list(Week = c(3, 3, 4, 4, 5, 5), AwayTeam = c("E", 
"A", "H", "I", "F", "F"), HomeTeam = c("A", "F", "E", "A", "C", 
"J")), class = "data.frame", row.names = c(NA, -6L))