将数据帧中的行与R中的矩阵行进行比较

将数据帧中的行与R中的矩阵行进行比较,r,matrix,dataframe,R,Matrix,Dataframe,我创建了这样一个矩阵: > head(matrix) Var1 Var2 Var3 Var4 Var5 Var6 Var7 Var8 Var9 Var10 Var11 [1,] "0" "0" "1" "0" "1" "1" "0" "0" "0" "0" "NA" [2,] "1" "0" "1" "0" "1" "1" "0" "0" "0" "0" "NA" [3,] "0" "1" "1" "0" "1" "1

我创建了这样一个矩阵:

> head(matrix)
     Var1 Var2 Var3 Var4 Var5 Var6 Var7 Var8 Var9 Var10 Var11
[1,] "0"  "0"  "1"  "0"  "1"  "1"  "0"  "0"  "0"  "0"   "NA"  
[2,] "1"  "0"  "1"  "0"  "1"  "1"  "0"  "0"  "0"  "0"   "NA"  
[3,] "0"  "1"  "1"  "0"  "1"  "1"  "0"  "0"  "0"  "0"   "NA"  
[4,] "1"  "1"  "1"  "0"  "1"  "1"  "0"  "0"  "0"  "0"   "NA"  
[5,] "0"  "0"  "2"  "0"  "1"  "1"  "0"  "0"  "0"  "0"   "NA"  
[6,] "1"  "0"  "2"  "0"  "1"  "1"  "0"  "0"  "0"  "0"   "NA"
现在,我想将上面的矩阵与以下数据框进行比较:

> head(df)
       cod Var11 Var1 Var2 Var3 Var4 Var5 Var6 Var7 Var8 Var9 Var10     Var12
1  C000354     B    1    1    4    0    1    2    0    0    0     1  51520.72
2  C000404     A    1    0    1    0    4    4    0    0    1     1  21183.25
3  C000444     A    1    0    4    1    3    3    0    0    0     1  67504.74
4  C000480     A    1    1    2    0    2    3    0    0    1     1  26545.92
5  C000983     C    1    0    1    0    3    4    0    0    0     0  10379.37
6  C000985     C    1    0    3    1    3    4    0    0    0     0  18660.99
矩阵包含变量的所有可能组合
Var1 Var2 Var3 Var4 Var5 Var6 Var7 Var8 Var9 Var10
,因此基本上当
df
的一行(只有
Var1
Var10
的列)与
矩阵的一行匹配时,
df
中的这一行的
Var12>=90000
,我希望它写在矩阵的相应列
VAR11

我试过这样做:

for (i in 1 : nrow(matrix)) {
  for (j in 1 : 10) {
    ifelse(matrix[i,j]==df[,(j+2)]
           && df$Var12[] >= 90000,
           matrix[i,"Var11"] <- "A",
           matrix[i,"Var11"] <- "NA")
  }
}
for(1中的i:nrow(矩阵)){
对于(1:10中的j){
ifelse(矩阵[i,j]==df[,(j+2)]
&&df$Var12[]>=90000,

矩阵[i,“Var11”]我不明白为什么在循环中使用1:10和j+2

#Some dummy data
col_to_match<-paste0("V",1:10)
set.seed(123)
mat <- cbind(matrix(sample(0:4, 100, replace=TRUE), ncol=10), "NA")
colnames(mat)<-c(col_to_match,"V11")
set.seed(123)
df<- data.frame("cod"=paste0("C",1:20), "V12"= runif(20,min=88000,max=95000))
set.seed(1)
df <- cbind(df, rbind(mat[3:10,col_to_match], matrix(sample(0:4, 120, replace=TRUE), ncol=10))  )
输出

 > mat
      V1  V2  V3  V4  V5  V6  V7  V8  V9  V10 V11 
 [1,] "1" "4" "4" "4" "0" "0" "3" "3" "1" "0" "NA"
 [2,] "3" "2" "3" "4" "2" "2" "0" "3" "3" "3" "NA"
 [3,] "2" "3" "3" "3" "2" "3" "1" "3" "2" "1" "A" 
 [4,] "4" "2" "4" "3" "1" "0" "1" "0" "3" "3" "A" 
 [5,] "4" "0" "3" "0" "0" "2" "4" "2" "0" "1" "A" 
 [6,] "0" "4" "3" "2" "0" "1" "2" "1" "2" "0" "A" 
 [7,] "2" "1" "2" "3" "1" "0" "4" "1" "4" "3" "A" 
 [8,] "4" "0" "2" "1" "2" "3" "4" "3" "4" "0" "NA"
 [9,] "2" "1" "1" "1" "1" "4" "3" "1" "4" "2" "A" 
[10,] "2" "4" "0" "1" "4" "1" "2" "0" "0" "2" "A" 

也许它产生了NA,因为没有两行是相同的。谢谢!声明完全按照要求工作!谢谢帮助
 > mat
      V1  V2  V3  V4  V5  V6  V7  V8  V9  V10 V11 
 [1,] "1" "4" "4" "4" "0" "0" "3" "3" "1" "0" "NA"
 [2,] "3" "2" "3" "4" "2" "2" "0" "3" "3" "3" "NA"
 [3,] "2" "3" "3" "3" "2" "3" "1" "3" "2" "1" "A" 
 [4,] "4" "2" "4" "3" "1" "0" "1" "0" "3" "3" "A" 
 [5,] "4" "0" "3" "0" "0" "2" "4" "2" "0" "1" "A" 
 [6,] "0" "4" "3" "2" "0" "1" "2" "1" "2" "0" "A" 
 [7,] "2" "1" "2" "3" "1" "0" "4" "1" "4" "3" "A" 
 [8,] "4" "0" "2" "1" "2" "3" "4" "3" "4" "0" "NA"
 [9,] "2" "1" "1" "1" "1" "4" "3" "1" "4" "2" "A" 
[10,] "2" "4" "0" "1" "4" "1" "2" "0" "0" "2" "A"