我有两个矩阵,我从中减去的值如下:
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,但是尽管在互联网上搜索,但完全无法理解它是如何应用于两个数据帧的(如果可以的话)。 任何帮助深表感谢。
答案 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