удалить части матрицы в R - PullRequest
       3

удалить части матрицы в R

1 голос
/ 01 февраля 2011

Я изменил свой вопрос, чтобы сделать мою проблему более заметной:

Здравствуйте, я не мог понять, как удалить части матрицы в R:

Дляпример

x <- matrix(c(1,2,3,4,5,6,7,8,9), nrow = 3)

Теперь я хотел бы удалить подматрицу x[2,1:2], чтобы конечная матрица (сравнимая с "удалить ячейки и двигаться вверх" в excel) была похожа на

1  4  7
3  6  8
NA NA 9.

Спасибо за помощь!

Ответы [ 3 ]

4 голосов
/ 01 февраля 2011

Сначала переместите ячейки, которые вы хотите сохранить, во второй ряд.

x[2,1:2] <- x[3,1:2]

Затем установите те, которые вы хотите пропустить, на NA.

x[3,1:2] <- NA

Или, за один шаг,

x[2:3, 1:2] <- x[c(3,NA), 1:2]

Результат в любом случае:

> x
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    3    6    8
[3,]   NA   NA    9

Элементарная функция для этого может выглядеть как

excelremoveup <- function(mat, rows, cols) {
  keep <- which(!(1:nrow(mat)) %in% rows)
  keep <- c(keep, rep(NA, nrow(mat)-length(keep)))
  mat[, cols] <- mat[keep, cols]
  mat
}

Вы бы назвали это так.

excelremoveup(x,2,1:2)
2 голосов
/ 01 февраля 2011

Матрицы индексируются сверху вниз, слева направо.И вы можете установить любую подматрицу, какую хотите, в NA:

> x[1:2,1:2] <- NA
> x
     [,1] [,2] [,3]
[1,]   NA   NA    7
[2,]   NA   NA    8
[3,]    3    6    9
0 голосов
/ 01 февраля 2011

Вы также можете использовать data.entry() для исключительного способа редактирования матрицы:

x <- matrix(c(1,2,3,4,5,6,7,8,9), nrow = 3)
data.entry(x)

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

Я полагаю, вы новичок в R?Вы можете прочитать одно из руководств.Это то, что мне понравилось, когда я начал:

http://cran.r -project.org / doc / contrib / Paradis-rdebuts_en.pdf

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...