Подтвердить что ты не робот

Как удалить дублированные строки по столбцу в матрице из R

Я пытаюсь удалить некоторые дублированные строки по одному столбцу (например, 1-й столбец) в матрице из R. как я могу извлечь уникальный набор из одного столбца из матрицы? Я использовал x_1 <- x[unique(x[,1]),], размер правильный, но все значения равны NA. так. Я попытался использовать x_1 <- x[-duplicated(x[,1]),] вместо этого. но размер неправильный.

любая идея?

Большое вам спасибо заранее,

4b9b3361

Ответ 1

Я думаю, вы запутались в том, как подмножество работает в R. unique(x[,1]) вернет набор уникальных значений в первом столбце. Если вы затем попытаетесь подмножество, используя те значения, которые R думает, вы обращаетесь к строкам матрицы. Таким образом, вы, вероятно, получаете NA, потому что значения относятся к строкам, которые не существуют в матрице.

Ваша другая попытка исходит из того факта, что duplicated возвращает булев вектор, а не вектор индексов. Таким образом, знак минус перед ним преобразует его в вектор 0 и -1, который снова интерпретирует R как попытку ссылаться на строки.

Попробуйте заменить '-' на '!' перед duplicated, который является булевым оператором отрицания. Что-то вроде этого:

m <- matrix(runif(100),10,10)
m[c(2,5,9),1] <- 1
m[!duplicated(m[,1]),]

Ответ 2

Как вам нужно, чтобы определить пробелы уникальных строк, используйте duplicated, как вы пробовали. Проблема заключалась в использовании - вместо !, поэтому попробуйте:

x[!duplicated(x[,1]),]