Попробуйте использовать colnames
y <- t(replicate(30, diff(c(0, sort(runif(3)), 100))))
colnames(y) <- c("very small", "small", "medium", "large")
Что дает следующий вывод:
very small small medium large
[1,] 0.596546432 0.115485521 0.09401027 99.19396
[2,] 0.118521670 0.694866442 0.16535686 99.02126
[3,] 0.421295392 0.002795051 0.03821284 99.53770
[4,] 0.202813028 0.269167296 0.21997193 99.30805
[5,] 0.008274178 0.222862752 0.56131816 99.20754
[6,] 0.031685216 0.303549471 0.04934352 99.61542
[7,] 0.319768410 0.022998874 0.25970746 99.39753
[8,] 0.087382152 0.609509549 0.09651936 99.20659
[9,] 0.773647428 0.086955708 0.02798129 99.11142
[10,] 0.331411455 0.368387836 0.13918296 99.16102
[11,] 0.131787972 0.463235363 0.22744175 99.17753
[12,] 0.293173234 0.345394548 0.23810145 99.12333
[13,] 0.153707973 0.074851698 0.44902831 99.32241
[14,] 0.153896874 0.017483677 0.05351859 99.77510
[15,] 0.182090415 0.502133689 0.29637249 99.01940
[16,] 0.413675049 0.082363683 0.26351923 99.24044
[17,] 0.006476240 0.001355163 0.39702371 99.59514
[18,] 0.558440146 0.177935100 0.13974163 99.12388
[19,] 0.066856618 0.095454829 0.22950901 99.60818
[20,] 0.050508366 0.202233682 0.41133537 99.33592
[21,] 0.152118187 0.373801691 0.01678485 99.45730
[22,] 0.545999638 0.070524028 0.03855460 99.34492
[23,] 0.216591213 0.171351144 0.41215730 99.19990
[24,] 0.214317867 0.388471707 0.24408460 99.15313
[25,] 0.134022010 0.380754224 0.29407828 99.19115
[26,] 0.071872900 0.127088718 0.39654603 99.40449
[27,] 0.105251258 0.554369684 0.23365911 99.10672
[28,] 0.233648165 0.224023261 0.19177330 99.35056
[29,] 0.649248827 0.139018328 0.14818464 99.06355
[30,] 0.090693591 0.034686614 0.10709328 99.76753
Почему имена и названия здесь ведут себя по-разному?
names
в этом контексте пытается присвоить имя каждому элементу в матрице, а не каждому столбцу (как вы могли бы найти с кадром данных). Это потому, что names
назначает имя каждому элементу объекта, то есть столько же имен, сколько length
матрицы, в данном случае 120.
Однако кадры данных фактически хранятся в виде списков, где каждый элемент списка представляет столбец. Следовательно, аналогичный фрейм данных будет иметь length
из 4, а names
будет просто пытаться назначить 4 имени, по одному на столбец.
colnames
, однако присваивает столько имен, сколько и длина второго измерения, то есть количество столбцов. Поскольку dim(y)
дает 30 4
, является ли y
матрицей или фреймом данных, в любом случае он назначит 4 имени, по одному на столбец.