С другой стороны: применить всегда доступ к функции, которую вы используете, по крайней мере, один раз.Если входные данные представляют собой фрейм данных без каких-либо строк, но с определенными переменными, он отправляет «FALSE» в качестве аргумента функции.Если фрейм данных полностью пуст, он отправляет логическую (0) функции.
> x <- data.frame(a=numeric(0))
> str(x)
'data.frame': 0 obs. of 1 variable:
$ a: num
> y <- apply(x,MARGIN=1,FUN=function(x){print(x)})
[1] FALSE
> x <- data.frame()
> str(x)
'data.frame': 0 obs. of 0 variables
> y <- apply(x,MARGIN=1,FUN=function(x){print(x)})
logical(0)
Так, как уже сказал Джошуа, либо управляйте перед применением, есть ли в фрейме данных строки, или добавьте условиефункция в приложении.
РЕДАКТИРОВАТЬ: Это означает, что вы должны учитывать, что длина (x) == 0 не очень хорошая проверка, вам нужно проверить, является ли длина (x == 0) или! X ИСТИНА, если обаВозможности могут возникнуть: (Код взят из Джошуа)
apply(X=data.frame(),MARGIN=1, # empty data.frame
FUN=function(row) {
if(length(row)==0 || !row) {return()}
!any(vec[ row[["start"]]:row[["end"]] ])
})