if else的快捷方式

Kla*_*aus 4 if-statement r

表达下面的决定规则的最短方式是什么?

df<-data.frame(a=LETTERS[1:5],b=1:5)
index<-df[,"a"]=="F"
if(any(index)){
  df$new<-"A"
}else{
  df$new<-"B"
}
Run Code Online (Sandbox Code Playgroud)

flo*_*del 9

最短的是

df$new=c("B","A")[1+any(df$a=="F")]
Run Code Online (Sandbox Code Playgroud)

更优雅的是:

df$new <- if (any(df$a == "F")) "A" else "B"
Run Code Online (Sandbox Code Playgroud)

要么

df <- transform(df, new = if (any(a == "F")) "A" else "B")
Run Code Online (Sandbox Code Playgroud)

ifelse运营商建议的两倍,但我会保留它为不同类型的操作:

df$new <- ifelse(df$a == "F", "A", "B")
Run Code Online (Sandbox Code Playgroud)

会在每行上放一个A或一个B,取决于该行中的值a(这不是您的代码当前正在执行的操作.)

  • 怎么'回合'c("B","A")[1 +"F"%in%df $ a]`?前面! (3认同)