You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R中基于其他列创建新列的代码错误原因咨询

问题原因分析

你的代码问题出在最后一行的逻辑条件写法错误:

training_data.df$Correct[(training_data.df$Condition==1|3) & training_data.df$Response==2] <- 1

错误细节

在R中,逻辑或运算符|的两侧必须是完整的逻辑判断表达式。而你写的Condition==1|3会被R解析为(Condition==1) | 3——这里的3是一个非零数值,在逻辑判断中会被自动转换为TRUE。因此整个表达式等价于(Condition==1) | TRUE,结果永远为TRUE,和Condition的实际值无关。

这就导致最后一行的条件简化为TRUE & (Response==2),也就是只要Response==2,无论Condition是什么,都会把Correct设为1。所以当Condition==2且Response==2时,这行代码会覆盖前两行的结果,把原本应该是0的Correct改成1。

正确写法

要表示Condition是1或3,你需要用以下两种方式之一:

  • 拆分逻辑判断:(training_data.df$Condition==1) | (training_data.df$Condition==3)
  • 使用%in%运算符:training_data.df$Condition %in% c(1,3)

修正后的最后一行代码:

training_data.df$Correct[(training_data.df$Condition %in% c(1,3)) & training_data.df$Response==2] <- 1

内容的提问来源于stack exchange,提问作者SilvaC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 07:21:22