R中复合语句中的奇怪错误:“赋值目标扩展到非语言对象”

时间:2013-12-27 01:49:58

标签: r syntax syntax-error assignment-operator

我在R中发生了一件非常奇怪的事情。这段代码给出了以下错误,“错误1&& CurrentData $ phase [i]> -0.5 || PriorData $ phase [MatchTimeFrames(i,:   赋值目标扩展为非语言对象“

  return (CurrentData$phase[i-1]<-1 && CurrentData$phase[i]>-0.5 || 
         PriorData$phase[MatchTimeFrames(i, CurrentData, PriorData)-1]<-1 &&
         PriorData$phase[MatchTimeFrames(i, CurrentData, PriorData)] > -0.5 ||  
         CurrentData$phase[i]>0 ||
         PriorData$phase[MatchTimeFrames(i, CurrentData, PriorData)] >0
       )

如果我注释掉第一个条件,代码就会运行。

  return (#CurrentData$phase[i-1]<-1 && CurrentData$phase[i]>-0.5 || 
         PriorData$phase[MatchTimeFrames(i, CurrentData, PriorData)-1]<-1 &&
         PriorData$phase[MatchTimeFrames(i, CurrentData, PriorData)] > -0.5 ||  
         CurrentData$phase[i]>0 ||
         PriorData$phase[MatchTimeFrames(i, CurrentData, PriorData)] >0
       )

如果我注释掉第二个条件,代码就会运行。

  return (CurrentData$phase[i-1]<-1 && CurrentData$phase[i]>-0.5 || 
         #PriorData$phase[MatchTimeFrames(i, CurrentData, PriorData)-1]<-1 &&
         PriorData$phase[MatchTimeFrames(i, CurrentData, PriorData)] > -0.5 ||  
         CurrentData$phase[i]>0 ||
         PriorData$phase[MatchTimeFrames(i, CurrentData, PriorData)] >0
       )

显然,我希望两个条件都能运行,并且使它工作的是在小于号和第二个条件的-1之间放置一个空格。

 return (CurrentData$phase[i-1]<-1 && CurrentData$phase[i]>-0.5 || 
         PriorData$phase[MatchTimeFrames(i, CurrentData, PriorData)-1]< -1 && PriorData$phase[MatchTimeFrames(i, CurrentData, PriorData)] > -0.5 ||  
         CurrentData$phase[i]>0 ||
         PriorData$phase[MatchTimeFrames(i, CurrentData, PriorData)] >0
       )

知道为什么会这样吗?看起来很奇怪,在这个特定的实例中,R需要一个小于号和-1之间的空格。请注意,第一个术语CurrentData $ phase [i-1]&lt; -1,没有空格。

谢谢。

1 个答案:

答案 0 :(得分:4)

这是因为<-是作业。这是一个较短的例子,它可以更清楚地说明发生了什么:

> x <- 1 && y <- 2
Error in 1 && y <- 2 : 
  target of assignment expands to non-language object