R - 将列表的第一个元素视为特例

时间:2013-05-16 07:21:56

标签: r

我想在列表上运行循环,将第一个元素视为特例。我试过了:

# 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
}

如果列表为空,则不会产生问题。最好的方法是什么?

2 个答案:

答案 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]) { ... }