0

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

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,则由“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] 值的位置缺乏理解。

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

4

1 回答 1

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
于 2013-08-17T01:20:34.697 回答