Применить/применить функцию ко всем столбцам в матрице

avatar
tor566
1 июля 2021 в 16:49
131
1
1

У меня есть матрица с именем seq$num, состоящая из 100 столбцов и 30 тысяч строк. Каждый столбец соответствует названию конкретного образца (например, CAGTCA), а каждая строка содержит числовое значение. С этим типом объекта я могу получить доступ к первой строке, написав seq$num[[1]] и так далее для других строк. Это краткий пример моей базы данных:

КАГТЦА АГАТЦА GCTCGA GCTCGA
-0,4930 -2,0330 0,7100 0,1560
1,0030 0,0120 -1,0433 0,6701
0,0013 1,0013 1,2451 -1,3421

Я хочу просмотреть все образцы с помощью функции lapply и классифицировать для каждого образца:

  • числа выше 1,5 как "высокие".
  • числа ниже 0 как "низкие".
  • числа от 0 до 1,5 как "средние".

Тогда мне нужно также принять к сведению, сколько высоких, низких и средних чисел имеет выборка.

Как это можно сделать? Я пытался применить функцию lapply, но не получил желаемого результата.

Источник
Ronak Shah
2 июля 2021 в 01:23
0

Было бы легче помочь, если бы вы создали небольшой воспроизводимый пример вместе с ожидаемым результатом. Читайте о как привести воспроизводимый пример.

Ответы (1)

avatar
Ronak Shah
4 июля 2021 в 04:12
0

Вы можете написать функцию, которая делит данные на категории.

classify <- function(x) ifelse(x >= 1.5, 'high', ifelse(x < 0, 'low', 'medium'))

Для каждого кадра данных в seq$num примените к нему функцию classify и используйте table для подсчета.

res <- lapply(seq$num, function(x) table(classify(as.matrix(x))))