【发布时间】:2016-09-21 05:39:37
【问题描述】:
我希望能够在数据框中创建新列,其值将由预定义的条件语句列表确定。这样做的最终目标是获得一个表二进制值,表示每个实例是否满足条件。它可能看起来像一个笨重或奇怪的输出,但这是我正在尝试建立的经济模型(重复销售模型)的要求。
这是一个非常简化的可重现示例:
df <- data.frame(a=c(1,2,3,4,5),b=c(0.3,0.2,0.5,0.3,0.7))
conditions <- data.frame(y=df$b>=0.5, z=df$b>=0.7)
columns <- c("y","z")
for(i in length(columns)){
df[, paste("var_",columns[i],sep="")] <- ifelse(conditions[i],1,0)
}
因此,在这种情况下,我想获取列“var_y”和“var_z”,它们的二进制值表示是否满足条件 y 或 z 的条件。
现在,我收到此错误:
ifelse(conditions[i], 1, 0) 中的错误:(list) 对象不能 强制输入“逻辑”
我不明白,因为数据框“条件”中的所有信息都是“逻辑”类型。
【问题讨论】:
标签: r loops if-statement