以下のコードを検討してください。
foo = list("First List", 1, 2, 3)
bar = function(x) {
cat("The list name is:", x[[1]], "\nThe items are:\n")
for (i in 2:length(x))
cat(x[[i]], "\n")
}
bar(foo)
結果は次のようになります。
The list name is: First List
The items are:
1
2
3
ここで、アイテムのないリストを渡すことを検討してください。ただし、名前は次のとおりです。
baz = list("Second List")
bar(baz)
結果は次のようになります。
The list name is: Second List
The items are:
Error in x[[i]] : subscript out of bounds
エラーは、後者の場合2:length(x)
のシーケンスが生成されるため、アクセスしようとして存在しないためです。c(2, 1)
bar(baz)
baz[2]
for
Rのループでこの不要な逆反復を簡単に防ぐ方法は?