将零转换为非常小的数字

use*_*760 1 r

我有一些数据,我想记录日志,然后制作热图。热图抱怨是因为-Inf我的数据框中的零生成了。

我想将所有零转换为非常小的数字。我认为这应该相对容易,但是我遇到了错误。例如。

Error in ifelse(ztest = 0, 1e-05, ztest) : unused argument(s) (ztest = 0)
Run Code Online (Sandbox Code Playgroud)

以下是一些示例数据:

 ztest<-data.frame(A=c(0,1,2,3),B=c(0,0,1,2),C=c(1,2,3,4))
Run Code Online (Sandbox Code Playgroud)

这是我所做的一些尝试,他们都抱怨未使用的争论,所以我想我不明白如何正确编写这些函数。尽管这些尝试看起来都与本网站上发布的类似问题的答案非常相似。

  1. z_inf <- ifelse(ztest=0,0.00001,ztest)
  2. z[z=0]<-0.00001
  3. inf_conv <- function(x){ifelse(x=0,0.00001,x)} z_inf<-apply(z,c(1,2),inf_conv)

Liz*_*der 5

为了让您拥有的不仅仅是评论,这里是对您的尝试 #2 的编辑,它应该可以满足您的需求:

z[z==0] <- .00001
Run Code Online (Sandbox Code Playgroud)

您之前只有一个 '=',因此它试图将 0 值分配给数据框 z,而不是按照您的意图对 0 值进行子集化。