В первом случае объект x является числовым вектором и не имеет атрибутов.Во втором - объект y также является числовым вектором, но имеет атрибут «names»:
x <- 1
attributes(x)
# NULL
y <- 1
names(y) <- "value"
attributes(y)
# $`names`
# [1] "value"
В обоих случаях метод print.default () используется для отображения значения объекта.Эта функция вызывает .Internal(print.default(x, digits, quote, na.print, print.gap,
right, max, useSource, noOpt))
.
Глядя на исходный код этой функции (например, здесь: https://github.com/wch/r-source/blob/trunk/src/main/print.c), мы можем видеть, что в зависимости от того, имеет ли вектор атрибуты или нет, выходные данные содержат индексыпервые элементы в каждой строке вывода или нет:
if((dims = getAttrib(s, R_DimSymbol)) != R_NilValue && length(dims) > 1) {
...
}
else { // no dim()
...
sprintf(ptag, "[[%d]]", i+1);
...
}