我在 R 中发生了一件非常奇怪的事情。这段代码给出了以下错误,“Error in 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]<-1 没有空格。
谢谢。
最佳答案
因为<-
是作业。这是一个更短的示例,可以更清楚地说明发生的情况:
> x <- 1 && y <- 2
Error in 1 && y <- 2 :
target of assignment expands to non-language object
关于r - R 中复合语句中的奇怪错误? : "target of assignment expands to non-language object",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20793648/