IF-else语句在R中抛出错误

IF-else语句在R中抛出错误,r,dataframe,R,Dataframe,我是R方面的新手。我试图根据if-else语句为列分配一些值。但它总是让我犯错误。有人能帮我理解这个错误的原因吗 代码: 您的错误源于“[”函数无法“知道”您打算使用“mean”作为列名。它能够找到的唯一mean是函数mean,尝试与数字进行比较会抛出您得到的特定错误。(通常,使用标记命名列是不好的做法,这些标记也是常用函数的名称,但这不是错误的原因。如果有一个名为mean的变量,解释器会使用它的值。除非使用with或[[name]]将它们公开,否则列名对运算符是不“可见”的或允许指定“评估环境

我是R方面的新手。我试图根据if-else语句为列分配一些值。但它总是让我犯错误。有人能帮我理解这个错误的原因吗

代码:


您的错误源于“[”函数无法“知道”您打算使用“mean”作为列名。它能够找到的唯一
mean
是函数mean,尝试与数字进行比较会抛出您得到的特定错误。(通常,使用标记命名列是不好的做法,这些标记也是常用函数的名称,但这不是错误的原因。如果有一个名为
mean
的变量,解释器会使用它的值。除非使用
with
[[name]]将它们公开,否则列名对运算符是不“可见”的
或允许指定“评估环境”的其他棘手设备,如
eval
substitute

备选方案(但可能不成功):

等等!不可能满足那个条件。在构造逻辑表达式时,您是否对AND和OR的含义感到困惑?应该是吗??:

REAR$EXCEPTION_1 <- with(REAR , mean < (-2) | mean > 2)*1 
后部$EXCEPTION_1 2)*1
第二个后果可能是:

REAR$EXCEPTION_2 <- with(REAR, !(mean < (-2) | mean > 2) & deviation > 1.5)*1  
<代码>后部$EXCEPTION_2 2)&偏差>1.5)*1 您不需要最后的
}else{}
子句,因为前两个赋值将所有其他条件设置为零。我假设SAT$EXCEPTION_2的赋值是您尚未修复的另一个输入错误


如果您使用
ifelse
,您需要了解不可能将赋值,当然也不可能将多个赋值应用于不同的向量。

dput输出还提供一条警告消息
警告消息:in is.na(secs):is.na()应用于非-(列表或向量)对于“NULL”< /代码>,您必须以不同的方式访问列“Mead”,例如,用<代码>后面的$MIG/<代码> @ KaSuall考虑使用<代码> IFOR> <代码> >您的代码> dPUT/COD>不显示DATA表。请说明为什么您已经标记了“DATA表”。如果您不处理DATA表,则可能打算<代码>尾部[后面$MIX <(2)]。&REAR$mean>2,]
。但是,这仍然会给出一个data.frame作为结果,而
if
需要一个逻辑值(而
ifelse
需要一个逻辑值向量)。您应该描述您想要实现的目标,因为您的代码看起来不像我们在R中做的那样。不清楚您是有两个数据集还是一个。例如。
REAR$EXCEPTION_1@BondedDust...sorry对于错误..编辑了更改..这将是偏差
if ( with(REAR , mean < (-2) & mean > 2) ) {
  REAR$EXCEPTION_1<-1; REAR$EXCEPTION_2<-0
   } else { if( with( REAR, !( mean < (-2) & mean > 2) & 
                                standardeviation > 1.5)
              )  { REAR$EXCEPTION_1<-0; REAR$EXCEPTION_2<-1
              } else {  REAR$EXCEPTION_1<-0; SAT$EXCEPTION_2<-0
                                           }
            }
REAR$EXCEPTION_1 <- with(REAR , mean < (-2) & mean > 2)*1 # *1 makes numeric
REAR$EXCEPTION_1 <- with(REAR , mean < (-2) | mean > 2)*1 
REAR$EXCEPTION_2 <- with(REAR, !(mean < (-2) | mean > 2) & deviation > 1.5)*1