Преобразуйте логическую матрицу в целочисленную матрицу

#r #matrix

Вопрос:

У меня есть следующая logical матрица:-

 k <- matrix(c(T,T,F,F,T,F,T,F,T,T,F,F,T,F,T,F,T,T,T,T,F,F,F,F,F), 5)
 

Однако, когда я делаю следующее:-

 z <- as.integer(k)
 

Я получаю integer вектор, а не integer матрицу:-

 [1] 1 1 0 0 1 0 1 0 1 1 0 0 1 0 1 0 1 1 1 1 0 0 0 0 0
 

Я хочу, чтобы он получил матрицу, подобную следующей:-

 k <- matrix(c(1,1,0,0,1,0,1,0,1,1,0,0,1,0,1,0,1,1,1,1,0,0,0,0,0), 5)
 

Заранее спасибо.

Ответ №1:

Используйте унарный :

  k
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    0    0    0    0
## [2,]    1    1    0    1    0
## [3,]    0    0    1    1    0
## [4,]    0    1    0    1    0
## [5,]    1    1    1    1    0
 

Ответ №2:

Возможно, нам придется использовать [] , чтобы сохранить тусклый свет в целости

 z <- k
z[] <- as.integer(k)
 

Или другой вариант-выполнить dim задание

 z <- as.integer(k)
dim(z) <- dim(k)
 

Или без внесения dim изменений, можно просто умножить на 1 , чтобы принудить к числовому

 z <- k * 1
 

Ответ №3:

 k <- matrix(c(T,T,F,F,T,F,T,F,T,T,F,F,T,F,T,F,T,T,T,T,F,F,F,F,F), 5)
res <-  k
res
#>      [,1] [,2] [,3] [,4] [,5]
#> [1,]    1    0    0    0    0
#> [2,]    1    1    0    1    0
#> [3,]    0    0    1    1    0
#> [4,]    0    1    0    1    0
#> [5,]    1    1    1    1    0
 

Создано 2021-10-04 пакетом reprex (v2.0.1)