Проблема в том, что во фрейме данных есть столбец Country
с установленным атрибутом "labels"
. В свою очередь, этот атрибут, который является просто вектором, имеет установленный атрибут "names"
. Итак, шаги для получения "names"
из "labels"
:
- Получить
"labels"
столбца Country
; - Получить
"names"
вектора - Извлечение имен, соответствующих вектору индексов, вектору
i
.
Первое чтение в опубликованных данных.
nms <- scan(text = "USA Germany France UK Spain India 'Saudi Arabia'",
what = character())
i <- scan(text = "3 2 2 1 5 4")
Теперь создайте пример набора данных.
labs <- setNames(1:7, nms)
dat <- data.frame(Country = sample(letters, 7))
attr(dat[["Country"]], "labels") <- labs
И извлеките то, о чем просит вопрос, следуя приведенным выше шагам.
labsCountry <- attr(dat[["Country"]], "labels")
names(labsCountry)[i]
#[1] "France" "Germany" "Germany" "USA" "Spain" "UK"
Или однострочник:
names(attr(dat[["Country"]], "labels"))[i]
#[1] "France" "Germany" "Germany" "USA" "Spain" "UK"
Чтобы увидеть, что это не зависит от значений меток, создайте второй пример.
labs2 <- setNames(101:107, nms)
attr(dat[["Country"]], "labels") <- labs2
И хотя "labels"
отличаются, работают те же самые инструкции:
attr(dat[["Country"]], "labels")
# USA Germany France UK Spain India Saudi Arabia
# 101 102 103 104 105 106 107
labsCountry <- attr(dat[["Country"]], "labels")
names(labsCountry)[i]