Преобразуйте каждый столбец матрицы из числовых в целые числа в R

Мне нужно преобразовать все столбцы матричного объекта R из числового в целое.

Описание матрицы:

> dim(path_abundances)
202  48

Это выглядит так (но с 202 строками и 48 столбцами):

введите здесь описание изображения

При поиске вопросов, заданных здесь другими пользователями, я нашел это решение для преобразования из числового в целое число (обратное тому, что я хочу) столбцов со 2 по 13 матрицы с именем Dades:

dades[2:13] ‹- lapply(dades[2:13], as.numeric)

Применительно к моей конкретной ситуации я пробовал:

> path_abundances[1:202] <- lapply(path_abundances[1:202], as.integer)

при поиске вывода это был список из 202 элементов, в котором каждый из них является значением для i-й строки первого столбца, но без десятичных знаков (как и ожидалось для целого числа):

  1. 512884
  2. 379358
  3. 319740
  4. так далее

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

Спасибо, что прочитали и заранее ответили

-- РЕДАКТИРОВАТЬ, чтобы добавить пример:

matrix(data= c(path_abundances[1:3,2], path_abundances[1:3,3], path_abundances[1:3,4]), ncol = 3, byrow = F)

         [,1]     [,2]     [,3]
[1,] 512884.5 493049.7 577625.5
[2,] 379358.8 343425.7 394776.8
[3,] 319740.8 327932.6 417228.9

Я хочу, чтобы эта матрица, каждый столбец которой является числовым классом, имела каждый столбец как целочисленный класс


person bpvalderrama    schedule 29.10.2020    source источник
comment
Знаете ли вы, почему ваши данные в первую очередь превращаются в символы/факторы? Возможно, лучше решить проблему заранее, чем исправлять ее постфактум. Вам будет легче помочь, если вы включите простой воспроизводимый пример с образцом ввода и желаемым выводом, которые можно использовать для тестирования и проверки возможных решений. Ваши данные почти наверняка не являются числовыми на данный момент.   -  person MrFlick    schedule 29.10.2020
comment
При использовании class(path_abundaces[,]) для любого столбца он является числовым, а не символьным. Я все равно добавлю пример! :)   -  person bpvalderrama    schedule 29.10.2020


Ответы (1)


Вы можете использовать storage.mode:

set.seed(101); m <- matrix(rnorm(9,mean=20,sd=3), 3,3)
storage.mode(m) <- "integer"
m
     [,1] [,2] [,3]
[1,]   19   20   21
[2,]   21   20   19
[3,]   17   23   22

Обратите внимание, что это будет усекать, а не округлять до целого числа - на случай, если это важно для вас.

person Ben Bolker    schedule 29.10.2020
comment
очень благодарна за ваш ответ! - person bpvalderrama; 29.10.2020