R 如何在条件下编写循环以查找最大值及其对应的滞后值

R 如何在条件下编写循环以查找最大值及其对应的滞后值,r,if-statement,for-loop,R,If Statement,For Loop,我只是写了一个块来找出互相关值的最大峰值,但是当我运行循环代码时,根本没有输出。所以我只想问我写循环时的逻辑是否有问题,或者我是否可以尝试修改顺序 我的预期输出逻辑: for (i in 1:n) { if (y[i]=max(y[i]) & x[i]>0) { p=x[i] } else if (y[i]=min(y[i] & x[i]<0) { p=-x[i] } } 很抱歉,我忘记了C语言中的一些基本循环知识,我想把它带回我

我只是写了一个块来找出互相关值的最大峰值,但是当我运行循环代码时,根本没有输出。所以我只想问我写循环时的逻辑是否有问题,或者我是否可以尝试修改顺序

我的预期输出逻辑:

for (i in 1:n) {
  if (y[i]=max(y[i]) & x[i]>0) {
     p=x[i]
  }
  else if (y[i]=min(y[i] & x[i]<0) {
     p=-x[i]
  }
}
很抱歉,我忘记了C语言中的一些基本循环知识,我想把它带回我的脑海。非常感谢你的帮助


另外,我测试了一些基本的数据帧,它确实工作,但不幸的是,它在我自己的数据集上不工作(没有错误,但没有输出)。因此,我猜ccf函数的输出是否也有问题。

代码中没有输出,因为缺少“}”。如果没有错误消息,通常意味着您尚未关闭循环。运行下面的,你会看到它的工作

d1 <- data.frame(runif(100), runif(100))
colnames(d1) <- c('x','y')

for(i in 1:length(d1[,2])) {
  if (d1[i,2] == max(d1[,2])) {
    if(d1[i,1]>0){
      cat(d1[i,1])
      cat("CHIE lags CHIQ \n")
      p=d1[i,1]
  } else {
    if (d1[i,2] == min(d1[,2]) & d1[i,1]<0) {
      d=-d1[i,2]
      cat(d1)
      cat("CHIE leads CHIQ \n")
      p=d1
    }
  }
}
}

d1它不起作用。我猜最后一个}是额外的,因为Rstudio给出了一个错误,指出这是一个意外的错误。我只是回答了。它给了我一个错误。我认为这是不可能的——如果你在代码中找到所有的“{”字符,你会找到5个。如果你在代码中找到所有的“}”字符,你会找到4个。如果你对我的代码做同样的计算,你会发现每个都有5个。我再次测试了我的代码-它肯定会运行。您可能没有以干净的输入开始,或者可能在末尾添加了另一个“}”。我重试了。您的不会产生任何错误。但它不起作用。所以我推测这应该是输入问题。我认为这可能与ccf功能有关。
d1 <- data.frame(runif(100), runif(100))
colnames(d1) <- c('x','y')

for(i in 1:length(d1[,2])) {
  if (d1[i,2] == max(d1[,2])) {
    if(d1[i,1]>0){
      cat(d1[i,1])
      cat("CHIE lags CHIQ \n")
      p=d1[i,1]
  } else {
    if (d1[i,2] == min(d1[,2]) & d1[i,1]<0) {
      d=-d1[i,2]
      cat(d1)
      cat("CHIE leads CHIQ \n")
      p=d1
    }
  }
}
}
tester <- apply(d1, FUN=which.max, 2)