我有2个大型矩阵,包含100列和10,000行。我试图将a
除以b
并计算log2,然后计算abs()。
a<-c(2,0,2,3,0,6)
b<-c(0,1,4,6,0,6)
a/b
Inf 0.0 0.5 0.5 NaN 1.0
我想使用“2”代替“Inf”并使用“0”代替NaN。
答案 0 :(得分:2)
你可以这样做:
res <- a/b;
res[is.infinite(res)] <- a[is.infinite(res)];
res[is.nan(res)] <- 0;
虽然,请注意,is.nan
的文档说:
Computations involving ‘NaN’ will return ‘NaN’ or perhaps ‘NA’:
which of those two is not guaranteed and may depend on the R
platform (since compilers may re-order computations).
我虽然得到NaN
。
答案 1 :(得分:2)
在我看来,你只是不想除以0而b==0
只返回相应的a
值。如果是这种情况,则无需在Inf
和NaN
上工作:只需将b
中的0替换为1。
b[b==0]<-1
a/b
#[1] 2.0 0.0 0.5 0.5 0.0 1.0