Этот вопрос кажется самым базовым c, но я просмотрел Inte rnet и не нашел ответов.
Моя цель - создать функцию, которая извлекает либо из вектора, либо метка из ее атрибутов (если она присутствует) или ее прямое / ссылочное имя (именно то, которое использовалось в коде).
Вот код на данный момент:
spss_label <- function(x) {if (is.null(attr(x, which = "label")) == F) {y <- attr(x, which = "label", exact = TRUE)}
else {y <- names(data.frame(x))}
y }
Теперь допустим, что у меня есть вектор «Дабу» с надписью «Цуг Цуг». Когда я набираю:
label(Dabu)
Он правильно выдает
[1] "Zug Zug"
Первая часть работает. Но когда у меня есть вектор без каких-либо атрибутов, скажем, «космос», это то, чем я заканчиваю
> spss_label(cosmos)
[1] "x"
То есть, когда у меня есть вектор с пустыми атрибутами, результирующий вывод будет x или, чтобы уточните c, имя, которое я дал аргументу. Часть names (data.frame ()) была идеей, чтобы обойти проблему, но функция автоматически меняет ссылочное имя на имя аргумента.
Заранее благодарю за любую помощь!