if语句不同分支赋值不同变量时如何仅用一次<-操作符完成赋值
解决方案
你可以直接把赋值操作移到if-else表达式的末尾,R语言支持将if-else的返回值作为赋值目标,写法如下:
if (sample(2, 1) == 1) a else b <- 5
这段代码的逻辑和你原来的写法完全等价,只会执行一次赋值操作,也不需要重复写<- 5。
如果需要更明确、或者要适配更复杂的变量名场景,也可以用assign函数实现:
target_var <- if (sample(2, 1) == 1) "a" else "b" assign(target_var, 5)
补充说明
- 第一种写法利用了R中
if-else是表达式(会返回值)的特性,返回的变量名可以直接作为左值接收赋值,语法完全合法。 - 第二种写法可读性更强,如果你后续需要用到目标变量的名字也可以直接复用
target_var变量。
内容的提问来源于stack exchange,提问作者J. Mini
相关产品推荐
相关产品推荐

