我想在列表上运行循环,将第一个元素视为特例。我试过了:
# do stuff for element 1
for (i = 2:length(l)) {
# do stuff
}
但如果长度为1,则会导致问题,因为2:1 = c(2,1)。编写该代码的最佳方法是什么?
事实上,我希望能够遍历像
这样的列表for (i = 1:length(l)) {
# do stuff
}
如果列表为空,则不会产生问题。最好的方法是什么?
答案 0 :(得分:1)
另一种方法是使用setdiff
:
# do stuff for element 1
for(i in setdiff(seq_along(l), 1)) {
# do stuff
}
或使用tail
# do stuff for element 1
for(i in tail(seq_along(l), -1)) {
# do stuff
}
或只是使用:
# do stuff for element 1
for(i in (seq_along(l))[-1]) {
# do stuff
}
编辑更新的问题: 您可以通过
安全地访问索引for(i in seq_along(l)) {
# do stuff
}
或通过
直接访问列表中的每个元素for(elem in l) {
# do stuff
}
答案 1 :(得分:0)
您可以直接在列表中执行for
。
for (i in l[-1]) { ... }