Я столкнулся со странным поведением в R с функцией sapply()
. Предполагается, что эта функция возвращает вектор, но в особом случае, когда вы даете ему пустой вектор, она возвращает список.
Правильное поведение с вектором:
a = c("A", "B", "C")
a[a == "B"] # Returns "B"
a[sapply(a, function(x) {x == "B"})] # Returns "B"
Правильное поведение со значением NULL:
a = NULL
a[a == "B"] # Returns NULL
a[sapply(a, function(x) {x == "B"})] # Returns NULL
Странное поведение с пустым вектором:
a = vector()
a[a == "B"] # Returns NULL
a[sapply(a, function(x) {x == "B"})] # Erreur : type 'list' d'indice incorrect
То же сообщение об ошибке, что и с этим утверждением:
a[list()] # Erreur dans a[list()] : type 'list' d'indice incorrect
Почему? Это ошибка?
Из-за этого странного поведения я использую unlist(lapply())
.