Как использовать функции all() и any() в R (с примерами)


Функции all() и any() в R можно использовать для проверки того, все или какие-либо значения в векторе оцениваются как TRUE для некоторого выражения.

Эти функции используют следующий синтаксис:

#check if *all* values in x are less than 10
all(x < 10)

#check if *any* values in x are less than 10
any(x < 10)

В следующих примерах показано, как использовать каждую функцию на практике.

Пример 1: Используйте all() и any() с вектором

Мы можем использовать следующие функции all() и any() , чтобы проверить, меньше ли все или какие-либо значения в векторе 10:

#define vector of data values
data <- c(3, 4, 4, 8, 12, 15)

#check if all values are less than 10
all(data < 10)

[1] FALSE

#check if any values are less than 10
any(data < 10)

[1] TRUE

Функция all() оценивается как ЛОЖЬ , потому что не все значения в векторе меньше 10.

Функция any() возвращает значение TRUE , поскольку хотя бы одно значение в векторе меньше 10.

Пример 2: Используйте all() со значениями NA

Если мы используем функцию all() с вектором, который имеет значения NA, в результате мы можем получить NA :

#define vector of data values with some NA values
data <- c(3, 4, 4, 8, NA, NA)

#check if all values are less than 10
all(data < 10)

[1] NA

Чтобы избежать этого, мы должны указать na.rm=TRUE , чтобы сначала удалить значения NA из вектора, прежде чем проверять, соответствуют ли все значения некоторому условию:

#define vector of data values with some NA values
data <- c(3, 4, 4, 8, NA, NA)

#check if all values are less than 10 (and ignore NA values)
all(data < 10, na. rm = TRUE )

[1] TRUE

Функция all() теперь оценивается как TRUE , поскольку каждое значение в векторе меньше 10, при условии, что мы игнорируем значения NA.

Пример 3: Используйте all() и any() со столбцами фрейма данных

Мы также можем использовать функции all() и any() для вычисления выражений для столбцов фрейма данных.

Например, предположим, что у нас есть следующий фрейм данных в R:

#define data frame
df <- data.frame(points=c(30, 22, 19, 20, 14, NA),
 assists=c(7, 8, 13, 13, 10, 6),
 rebounds=c(8, 12, NA, NA, 5, 8))

#view data frame
df

 points assists rebounds
1 30 7 8
2 22 8 12
3 19 13 NA
4 20 13 NA
5 14 10 5
6 NA 6 8

Мы можем использовать функции all() и any() для оценки различных выражений для значений в столбце «rebounds»:

#check if all values are less than 10 in rebounds column
all(df$rebounds < 10, na. rm = TRUE )

[1] FALSE

#check if any values are less than 10 in rebounds column
any(df$rebounds < 10, na. rm = TRUE )

[1] TRUE

#check if there are any NA values in rebounds column
any(is.na(df$rebounds))

[1] TRUE

Из вывода мы видим:

  • Не все значения меньше 10 в столбце подборов.
  • По крайней мере одно значение меньше 10 в столбце подборов.
  • В столбце подборов есть как минимум одно значение NA.

Связанный: Как использовать is.na в R (с примерами)

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в R:

Как добавить столбец во фрейм данных в R
Как добавить пустой столбец во фрейм данных в R
Как отсортировать фрейм данных по столбцу в R