Добавление описаний к элементам списка в R - PullRequest
0 голосов
/ 18 февраля 2020

Есть ли способ добавить описания к элементам в списке в R? Я хочу объединить четыре кадра данных в список, но вместе с именем каждого кадра данных в списке я хочу, чтобы список также содержал краткое описание кадра данных.

Например, мне нужна строка сделать что-то вроде того, что сделала бы моя последняя строка в приведенном ниже коде (псевдокодированная).

a <- matrix(rnorm(9), nrow=3, ncol=3)
b <- matrix(rnorm(9), nrow=3, ncol=3)
c <- matrix(rnorm(9), nrow=3, ncol=3)
d <- matrix(rnorm(9), nrow=3, ncol=3)
dat <- list(a, b, c, d)
names(dat) <- c("subject_info", "sample_info", "study_info", "test_info")
# description(dat$subject_info) <- "Subject-by-subject summary of results from the clinical trial"

1 Ответ

2 голосов
/ 18 февраля 2020

Заимствуя из @ комментария Акруна , естественный способ сделать это - использовать концепцию R help("attributes"). См. Также Advanced R by Hadley Wickham .

Если вы хотите автоматизировать задачу получения и установки специального атрибута, в данном случае атрибута "description", определите функции получения и установки.

description <- function(x){
  attr(x, "description")
}
`description<-` <- function(x, value){
  attr(x, "description") <- value
  x
}

description(dat$subject_info) <- "Subject-by-subject summary of results from the clinical trial"

Теперь посмотрите, сработало ли это .

description(dat$subject_info)
#[1] "Subject-by-subject summary of results from the clinical trial"

Примечание.

Некоторые базовые функции R с длинными именами, которые много раз используются, имеют формы коротких имен. Примером является coefficients и эквивалент coef. Если вы планируете использовать эти функции, вы можете определить псевдонимы коротких имен.

# aliases
descr <- description
`descr<-` <- `description<-`

descr(dat$sample_info) <- "A test"
descr(dat$sample_info)
#[1] "A test"

lapply(dat, descr)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...