为什么在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