有条件地执行一个连接命令中的特定行

时间:2021-04-21 15:52:22

标签: r if-statement

我想执行一个跨越多行的命令,并且能够有条件地在代码中包含或排除某些行。

最小示例(控制台输出以 --> 开头)

Condition1 <- TRUE
Condition2 <- FALSE

1  + 
  if(Condition1){2} + 
  3

--> [1] 6

1  + 
  if(Condition2){2} + 
  3

--> numeric(0)

第一个计算按预期工作,结果为 6。但是对于第二个,我希望得到 4 作为答案,但控制台会打印“numeric0”。我以为我可以通过将加号放在大括号中来解决它:

1  + 
  if(Condition2){2 +} 
  3

但不幸的是,这会产生错误。当然,我可以通过以下方式做到这一点

1  + 
  if(Condition2){2} else {0} +
  3
---> [1] 4

然而,我想使用它的代码更复杂,如果我不需要指定使计算成为可能的替代方案,它会容易得多。因为随着代码的变化,我还需要指定一个有用的替代方案(简单示例:将示例中的 + 更改为 *,然后将 0 作为 else 语句有问题)

或者我可以执行以下操作,但这会使代码更复杂且效率更低。

a <- 1
if(Condition2){a<-a + 2}
(a <- a + 3)
--> [1] 4

所以作为一个目标,我基本上希望能够跳过第二行(如果条件为 FALSE)并在下一行继续连接的命令。

我已经搜索过stackoverflow,但只找到了这个问题R Conditional evaluation when using the pipe operator %>%,类似但只回答了管道操作符的使用问题。如果可能的话,我不想依赖管道运营商来解决问题。

0 个答案:

没有答案
相关问题