表达下面的决定规则的最短方式是什么?
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)
最短的是
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(这不是您的代码当前正在执行的操作.)