为什么在for循环执行期间下标超出范围?

为什么在for循环执行期间下标超出范围?,r,for-loop,R,For Loop,在我的脚本中,是否可以获得d[[x]]“空”。我试着用else来做,但它不起作用 如何编写else,以便它可以给出检查零的结果 for (x in 1:licznik3) { if(a[[x]] > d[[x]]) { out3[[x]] <- wspolne3[[x]] } else (a[[x]] < d[[x]]) { out3[[x]] <- NA } } d[[x]]中出错:下标超出范围 例如: 我有3个循环 如

在我的脚本中,是否可以获得
d[[x]]
“空”。我试着用
else
来做,但它不起作用

如何编写
else
,以便它可以给出检查零的结果

for (x in 1:licznik3) 
{
  if(a[[x]] > d[[x]]) 
  {
    out3[[x]] <- wspolne3[[x]]
  }
  else (a[[x]] < d[[x]]) 
  {
    out3[[x]] <- NA

  }
}
d[[x]]中出错:下标超出范围

例如:

我有3个循环

如果
a[[x]]
大于
d[[x]]

该值转到
out3

下一个循环检查类似的条件

我的问题是,在第二个循环中(显示的代码)
d[[x]]
可以为空(在前一个循环中,没有任何值大于
a[[x]]

那我们怎么办

> a
  [1] 0.1
> d
numeric (0)

只需添加额外的检查,以确保您的计数器(也称为licznik3;)不会超过向量
d
的长度。如果超过
的值,则断开
循环

a <- 1:10
licznik3 <- 7
out3 <- rep_along(a, NA)
wspolne3 <- 2:12
d <- -c(1, 4, 2)

for (x in 1:licznik3) {
  if (x > length(d)) {
    break
  }

  if (a[[x]] > d[[x]]) {
    out3[[x]] <- wspolne3[[x]]
  } else {
    out3[[x]] <- NA
  }
}

out3

a如果您不提供一个工作示例,没有人可以帮助您,其中向量
licznik3
wspolne3
是明确的。请提供一个示例。很难弄清楚你在问什么。例如,短语“它不出去”没有明确的含义。什么是“it”以及“it”无法“走出去”意味着什么?您的示例中的示例帮助了一些人,但仍然不清楚预期的输出是什么。如果
d[[x]]
未定义,会发生什么情况?为什么不在循环之前简单地检查
d
,如果
d
为空,则不执行循环?
a <- 1:10
licznik3 <- 7
out3 <- rep_along(a, NA)
wspolne3 <- 2:12
d <- -c(1, 4, 2)

for (x in 1:licznik3) {
  if (x > length(d)) {
    break
  }

  if (a[[x]] > d[[x]]) {
    out3[[x]] <- wspolne3[[x]]
  } else {
    out3[[x]] <- NA
  }
}

out3