Как заменить значения в матрице в соответствии с индексом списка в R? - PullRequest
1 голос
/ 05 июля 2019

у меня есть матрица «м» с двумя столбцами и 664 строками; Каждый m [x, y] имеет значение в диапазоне от 1 до 889.

, например

nrow   ncol

1       3
1       250
1       341
2       212
2       452
....

С другой стороны, у меня есть список из 889 строк, которые содержат факторы, извлеченные из базы данных;

, например

List
[1]   TORNADOS
[2]   EXTREME WEATHER
[3]   TORNADO
[4]   VOLCANO ERUPTION
....

Я хочу заменить числа в первой матрице символьными значениями в списке в соответствии с их индексом.

, например

nrow   ncol      ---->     nrow     ncol
1      3                   TORNADOS TORNADO

Спасибо!

Ответы [ 2 ]

1 голос
/ 05 июля 2019

Мы можем использовать

cbind(nrow = m[List[,1], ncol = m[List[,2]])
1 голос
/ 05 июля 2019

Если ваша матрица называется mat, а список строк называется x, вы можете сделать

mat[] <- x[c(mat)]

Рассмотрим воспроизводимый пример,

x <- c("TORNADOS", "EXTREME WEATHER", "TORNADO", "VOLCANO ERUPTION")
mat <- matrix(c(1, 1, 1, 2, 2, 3, 4, 4, 1, 2), nrow = 5)
mat
#     [,1] [,2]
#[1,]    1    3
#[2,]    1    4
#[3,]    1    4
#[4,]    2    1
#[5,]    2    2

mat[] <- x[c(mat)]
mat
#           [,1]              [,2]              
#[1,] "TORNADOS"        "TORNADO"         
#[2,] "TORNADOS"        "VOLCANO ERUPTION"
#[3,] "TORNADOS"        "VOLCANO ERUPTION"
#[4,] "EXTREME WEATHER" "TORNADOS"        
#[5,] "EXTREME WEATHER" "EXTREME WEATHER" 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...