请注意,以下代码不起作用。但这表达了我的主要目的。
if(df$col_1 > 2 & df$col_1 > 3) {df$col_4 = value_1}
然后我尝试了ifelse
df$col_4 = ifelse(df$col_1 > 2 & df$col_1 > 3, value_1, 0)
但是,使用ifelse
的问题在于,只要df$col_4
结果为(df$col_1 > 2 & df$col_1 > 3)
,FALSE
的原始值将为零。
df$col_4
的原始值应保留在(df$col_1 > 2 & df$col_1 > 3) == FALSE
的位置。
我都不喜欢nested ifelse
,因为那看起来很烂,阅读不友好。
是否有类似sql update
的方式,仅在多个条件导致TRUE
的情况下才更新值?
答案 0 :(得分:1)
如所评论,您可以使用:
df$col_4 = ifelse (df$col_1> 2 & df$col_1 >3, value_1, df$col_4 )
与此有关的一个潜在问题是您正在动态更新df$col_4
,这可能会使跟踪错误/错误行为变得更加困难。我建议您将结果存储在新列中(如果您不想有很多新列,则可以在df
之外)。我什至会添加向量df$condition <- df$col_1> 2 & df$col_1>3
。这样一来,您就可以一目了然地控制结果。
df$condition <- df$col_1> 2 & df$col_1>3
df$col_5 = ifelse (df$condition, value_1, df$col_4 )