首页 > 解决方案 > 不使用 if else 写入表达式

问题描述

有没有办法在两种情况下都不使用 if-else 条件来编写综合表达式。

谢谢

  1. n可以取值 - 0 或 1

if (n == 2)
{
  output <- c(0.5, 0.5)
} else
{
  output <- c(1, 0)
}

  1. 根据值n- 0 或 1生成带有 x 和 y 的 tibble
library(tidyverse)

N = 1000
if (n == 1)
{
  x <- runif(N/n, min = 0, max = 5)
  y <- runif(N/n, min = 0, max = 5)
  tbl <- tibble(x, y)
} else
{
  x1 <- runif(N/n, min = 0, max = 5)
  y1 <- runif(N/n, min = 5, max = 10)
  
  x2 <- runif(N/n, min = 5, max = 10)
  y2 <- runif(N/n, min = 0, max = 5)
  
  tbl <- tibble(x = c(x1, x2),
                y = c(y1, y2))
}

标签: r

解决方案


如果您想避免使用if...else ...,也许下面的代码将是一个选项:

  • 情况1
list(c(1, 0), c(0.5, 0.5))[[(n == 2) + 1]]
  • 案例2
list(
  {
    x1 <- runif(N / n, min = 0, max = 5)
    y1 <- runif(N / n, min = 5, max = 10)

    x2 <- runif(N / n, min = 5, max = 10)
    y2 <- runif(N / n, min = 0, max = 5)

    tbl <- tibble(
      x = c(x1, x2),
      y = c(y1, y2)
    )
  },
  {
    x <- runif(N / n, min = 0, max = 5)
    y <- runif(N / n, min = 0, max = 5)
    tbl <- tibble(x, y)
  }
)[[(n == 1) + 1]]

推荐阅读