我想在列表上运行一个循环,将第一个元素视为特例。我试过了:
# 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
}
如果列表为空,则不会产生问题。最好的方法是什么?
我想在列表上运行一个循环,将第一个元素视为特例。我试过了:
# 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
}
如果列表为空,则不会产生问题。最好的方法是什么?
一种替代方法是使用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
}
您可以for
直接在列表中执行。
for (i in l[-1]) { ... }