【发布时间】:2018-11-24 23:20:44
【问题描述】:
我正在尝试更改 data.frame 中变量的值,如果满足条件,则变量采用另一个值,如果不满足条件,则变量采用其原始值。我很困惑为什么会出现错误,想知道如何修改我的代码来克服这个错误。
例如,假设我有以下数据集x,我想创建一个新变量var3,这样如果满足条件,var3 取 1,如果不满足,var3 取其旧值.
x = data.frame(var1 = c('a', 'b', 'ab'),
var2 = rep(2,3))
x
x %>%
dplyr::mutate(var3 = 0,
var3 = if_else(grep('a', var1)==1, 1, var3))
如果我运行此代码,我会收到以下错误
Error in mutate_impl(.data, dots) :
Column `var3` must be length 3 (the number of rows) or one, not 2
正确答案是
var1 var2 var3
1 a 2 1
2 b 2 0
3 ab 2 1
我的真实代码更复杂,当条件评估 FALSE 时,我需要 var3 取其旧值,而不仅仅是一个奇异值(比如 0)。
我在这里做错了什么?
【问题讨论】:
标签: r if-statement dplyr