基于其他两个矩阵的值替换矩阵中的值

时间:2013-08-17 01:08:16

标签: r matrix

我有两个矩阵,我从中减去的值如下:

x=read.table("x.txt", sep= "\t", header=FALSE)

9  3  8  2  0
5  4  5  2  1

y=read.table("y.txt", sep= "\t", header=FALSE)

9  7  4  0  5
3  1  0  0  1

xy<-x-y

0 -4  4  2 -5
2  3  5  2  0

我想用xy的值代替,如果x> 0和y == 0中的值,则xy中的值被“D”代替,如果x == 0且y> 0,则代入xy由“D”。 给我一张这样的表:

0 -4  4  D  A
2  3  D  D  0

我尝试了不同的东西,比如循环:

out <- array(dim=dim(xy))

for (i in 1:length(xy)) {
out[i] <- ifelse(x[i]==0, "D",
ifelse(y[i]==0, "A", xy[i]))
}

但是有些东西不起作用,我将这归因于对[i]的价值位置缺乏理解。

我也尝试过使用apply,但是尽管在互联网上搜索,但完全无法理解它是如何应用于两个数据帧的(如果可以的话)。 任何帮助深表感谢。

1 个答案:

答案 0 :(得分:1)

> xy[x > 0 & y == 0] = "D"
> xy
  V1 V2 V3 V4 V5
1  0 -4  4  D -5
2  2  3  D  D  0 
> xy[x == 0 & y > 0] = "A"
> xy
  V1 V2 V3 V4 V5
1  0 -4  4  D  A
2  2  3  D  D  0