Расширить матрицу на основе условий в R - PullRequest
0 голосов
/ 15 октября 2019

Рассмотрим следующую случайную матрицу:

m <- cbind(c("r1","r2","r3","r4","r1","r2","r3","r4"),c(3,2,5,2,5,2,6,4))

Я хочу расширить ее на основе условия. Например, как создать дополнительную строку под каждой строкой с ячейкой «r4», где значения точно такие же, как в строках с ячейкой «r4». Таким образом, тогда я получу следующую матрицу:

m <- cbind(c("r1","r2","r3","r4","r4","r1","r2","r3","r4","r4"),c(3,2,5,2,2,5,2,6,4,4))

1 Ответ

2 голосов
/ 15 октября 2019

Вы можете использовать rep для репликации каждой строки, которую ячейка r4 любит:

m[rep(seq_len(nrow(m)), 1 + (m[,1] == "r4")),]
#      [,1] [,2]
# [1,] "r1" "3" 
# [2,] "r2" "2" 
# [3,] "r3" "5" 
# [4,] "r4" "2" 
# [5,] "r4" "2" 
# [6,] "r1" "5" 
# [7,] "r2" "2" 
# [8,] "r3" "6" 
# [9,] "r4" "4" 
#[10,] "r4" "4" 

m[,1] == "r4" дает логический вектор, где вы можете добавить 1, чтобы сказать rep, сколькораз этот ряд должен быть дан.

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