R: nazywanie kolumn macierzy z prefixem

13-sie-2020

R pozwala nazywać wiersze i kolumny macierzy. Dość często do nazywania wierszy i kolumn stosowane są pewne stałe, jak np. nazwy miesięcy, nazwy dni tygodnia, albo po prostu numery kolumn/wierszy. A co jeśli chcesz żeby macierz została nazwana czymś w rodzaju:

x_<numer>

Popatrz na kolejny przykład. Najpierw tworzymy macierz m z 12 kolumnami i 1o wierszami

m <- matrix(data=c(1:120), ncol = 12)
m
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
 [1,]    1   11   21   31   41   51   61   71   81    91   101   111
 [2,]    2   12   22   32   42   52   62   72   82    92   102   112
 [3,]    3   13   23   33   43   53   63   73   83    93   103   113
 [4,]    4   14   24   34   44   54   64   74   84    94   104   114
 [5,]    5   15   25   35   45   55   65   75   85    95   105   115
 [6,]    6   16   26   36   46   56   66   76   86    96   106   116
 [7,]    7   17   27   37   47   57   67   77   87    97   107   117
 [8,]    8   18   28   38   48   58   68   78   88    98   108   118
 [9,]    9   19   29   39   49   59   69   79   89    99   109   119
[10,]   10   20   30   40   50   60   70   80   90   100   110   120

Kiedy chcesz nazwać kolumny numerami poprzedzonymi prefiksem x_, wystarczy skonstruować wektor, który z takich danych się składa. Do łatwego zbudowania takiego wektora można wykorzystać paste(), które jako argumenty przyjmuje wartości do połączenia:

colnames(m) <- paste('x_', c(1:12))
m

wynik będzie taki:

      x_ 1 x_ 2 x_ 3 x_ 4 x_ 5 x_ 6 x_ 7 x_ 8 x_ 9 x_ 10 x_ 11 x_ 12
 [1,]    1   11   21   31   41   51   61   71   81    91   101   111
 [2,]    2   12   22   32   42   52   62   72   82    92   102   112
 [3,]    3   13   23   33   43   53   63   73   83    93   103   113
 [4,]    4   14   24   34   44   54   64   74   84    94   104   114
 [5,]    5   15   25   35   45   55   65   75   85    95   105   115
 [6,]    6   16   26   36   46   56   66   76   86    96   106   116
 [7,]    7   17   27   37   47   57   67   77   87    97   107   117
 [8,]    8   18   28   38   48   58   68   78   88    98   108   118
 [9,]    9   19   29   39   49   59   69   79   89    99   109   119
[10,]   10   20   30   40   50   60   70   80   90   100   110   120

Komentarze są wyłączone

Autor: Rafał Kraik