R:将矩阵转换为YES,无数据帧

Har*_*pta 2 r matrix apply dataframe

我有一个像这样的矩阵

df <- matrix(c(rep(1,3),rep(2,3)),nrow=3,ncol=2)

df: 
      [,1] [,2]
[1,]    1    2
[2,]    1    2
[3,]    1    2
Run Code Online (Sandbox Code Playgroud)

我想将每个单元格值转换为YES大于0,否则NO

我明白我可以这样做

apply(df, 2, function(x) ifelse(x > 0, "Yes","No")) 
Run Code Online (Sandbox Code Playgroud)

然而,我的矩阵是非常巨大的(百万*5000),因此使用应用需要非常大的时间

我也试过了

df <- ifelse(df > 0, "Yes","No")
Run Code Online (Sandbox Code Playgroud)

然而,即使这需要很多时间

我能用这个获得更好的表现吗?

Sve*_*ein 5

这是创建矩阵的一种方法:

df[] <- c("No", "Yes")[(df > 0) + 1]
Run Code Online (Sandbox Code Playgroud)

结果:

     [,1]  [,2] 
[1,] "Yes" "Yes"
[2,] "Yes" "Yes"
[3,] "Yes" "Yes"
Run Code Online (Sandbox Code Playgroud)

  • @Username 命令 `df &gt; 0` 返回一个带有 `TRUE` 和 `FALSE` 的逻辑向量。在数学运算中,“TRUE”代表 1,“FALSE”代表 0。由于我加了 1,结果向量包含 1 和 2。这些值用于索引长度为 2 的向量 `c("No", "Yes")`。 (2认同)