我已经创建了一个矩阵像这样在R A矩阵的行:比较的数据帧的行与
> 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
的所有可能组合,所以基本上当(从VAR1
到VAR10
只柱)匹配df
的一排的matrix
行和该行中df
有Var12>=90000
,我希望它被写入"A"
在matrix
的对应列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")
}
}
但这个矩阵的所有行写道:NA
。
有谁知道为什么会发生这种情况或如何解决它?
在此先感谢。
[如何使一个伟大的R可重现的例子?](http://stackoverflow.com/questions/5963269) – Sotos
也许它是生产NA的,因为没有两个相同的行彼此 – Onyambu