我在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,没有空格。
谢谢。
答案 0 :(得分:4)
这是因为<-
是作业。这是一个较短的例子,它可以更清楚地说明发生了什么:
> x <- 1 && y <- 2
Error in 1 && y <- 2 :
target of assignment expands to non-language object