0

最初の要素を特別なケースとして扱い、リストに対してループを実行したいと考えています。私は試した:

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

リストが空の場合、問題は発生しません。それを行う最善の方法は何ですか?

4

2 に答える 2

1

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
}
于 2013-05-16T07:35:59.000 に答える