Извлекать уникальные элементы в каждом ряду матрицы - PullRequest
1 голос
/ 13 марта 2020

У меня есть большая матрица, заполненная целыми числами. Я хотел бы создать вторую матрицу, которая содержит ту же информацию, но удаляет все дубликаты по строкам и заменяет их нулями.

Например, мне нужно преобразовать следующую матрицу:

Строка 1 : [1,2,3,2,3,4]
Строка 2: [3,4,2,2,1,6]

до:

Строка 1: [1,2,3,0,0,4]
Строка 2: [3,4,2,0,1,6].

Я могу сделать это очень легко, используя al oop, но так как я работаю с большими данными, я стараюсь избегать al oop. Есть какой-либо способ сделать это?

Я новичок в R, так что, надеюсь, все это имело смысл. Я ценю любую помощь!

1 Ответ

1 голос
/ 13 марта 2020

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

m1[] <- t(apply(m1, 1, function(x) replace(x, duplicated(x), 0)))

Или более компактно

t(!apply(m1, 1, duplicated)) * m1

Данные

m1 <- rbind(c(1, 2, 3, 2, 3, 4), c(3, 4, 2, 2, 1, 6))
...