r - 为什么在 for 循环执行期间下标超出范围?
问题描述
在我的脚本中是否有可能获得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
}
}
变量:
> a
[1] 0.1
> d
numeric(0)
> licznik3
[1] 16
d[[x]] 中的错误:下标越界
例子:
我有 3 个循环。
如果a[[x]]
大于d[[x]]
这个值去out3
下一个循环检查类似的条件。
我的问题是在第二个循环中(显示的代码)d[[x]]
可以为空(在前一个循环中没有值大于a[[x]]
)
然后我们有如何
> a
[1] 0.1
> d
numeric (0)
解决方案
只需添加额外的检查,以确保您的计数器 aka licznik3 ;) 不会超过 vector 的长度d
。如果超过break
for
-loop。
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
推荐阅读
- javascript - API 不与 axios 一起运行,而是与 fetch 一起运行
- git - 如何将文件添加到 Visual Studio 2019 扩展未跟踪为更改的 GitHub 存储库?
- linux - Shell 脚本变量范围
- javascript - 使用 jquery 将“#”哈希正确添加到 url
- python - Kivy buildozer docker:在当前目录中找不到 buildozer.spec。放弃
- linux - grep 后的两个字符串比较
- vue.js - 带有插槽的单个文件组件在父事件上意外重新渲染
- javascript - React Hook“useState”在过滤后无法设置数组的完整值
- javascript - 如何附加一个带有标签的圆圈以指示矩形节点的信息并在下载前删除圆圈
- ansible - 如何编写 Ansible 条件 for 循环