2016-04-26 2 views
1

У меня есть следующие матрицы c:Перенумерация имена столбцов в матрицу R

  [,1] [,2] [,3] [,4] [,5] [,6] 
result.1 62 64 44 55 81 66 
result.2 65 50 56 79 69 52 
result.3 57 62 84 76 65 59 
result.4 30 70 61 41 36 60 
result.6 66 63 51 44 66 28 
result.7 80 72 72 82 67 66 

вход представляет собой матрицу c. В матрице может быть больше одного пробела (номера пропущенных строк), а повторная нумерация будет для каждого промежутка от первой строки до последней строки.

Как видно, отсутствует строка (результат.5) Я хотел бы изменить нумерацию имен столбцов так, чтобы она пропускала недостающее значение в строках. Ожидаемый результат будет:

 [,1] [,2] [,3] [,4] [,6] [,7] 
result.1 62 64 44 55 81 66 
result.2 65 50 56 79 69 52 
result.3 57 62 84 76 65 59 
result.4 30 70 61 41 36 60 
result.6 66 63 51 44 66 28 
result.7 80 72 72 82 67 66 

Для воспроизведения примера, я добавляю следующий код:

c<-read.table (text = " 
    [,1] [,2] [,3] [,4] [,5] [,6] 
    result.1 62 64 44 55 81 66 
    result.2 65 50 56 79 69 52 
    result.3 57 62 84 76 65 59 
    result.4 30 70 61 41 36 60 
    result.6 66 63 51 44 66 28 
    result.7 80 72 72 82 67 66 ", header = TRUE) 
    setnames(c, c("[,1]", "[,2]", "[,3]", "[,4]", "[,5]", "[,6]")) 
    c<-as.matrix (c) 
+1

'COLNAMES (с) <- gsub ('\\ D', '', rownames (c)) '? – Sotos

+3

Пожалуйста, не используйте 'c' в качестве имени объекта,' c <- matrix (1: 4, 2); c (c [, 1], c (4: 5)) '... – zx8754

+1

Почему не просто' colnames (x) <- rownames (x) '? Имена - это строки. Поскольку 'x [," 6 "]' не будет таким же, как 'x [, 6]' – zx8754

ответ

2

Вы можете использовать следующие,

colnames(c) <- gsub('\\D', '', rownames(c)) 
c 
#   1 2 3 4 6 7 
#result.1 62 64 44 55 81 66 
#result.2 65 50 56 79 69 52 
#result.3 57 62 84 76 65 59 
#result.4 30 70 61 41 36 60 
#result.6 66 63 51 44 66 28 
#result.7 80 72 72 82 67 66 
Смежные вопросы