#r
#r
Вопрос:
Допустим, у меня есть список объектов в глобальной среде. Как бы я извлек только те, которые имеют определенный набор атрибутов?
x1 <- 1:10
x2 <- 1:10
x3 <- 1:10
x4 <- 1:10
x5 <- 1:10
attr(x1, "foo") <- "bar"
attr(x5, "foo") <- "bar"
Как мне извлечь x1 и x5, основываясь на том факте, что у них есть атрибут «foo» как «bar»?
Ответ №1:
Пара вариантов ответа Рамната.
Для получения нескольких объектов предпочтительнее использовать mget
вместо get
с lapply
.
all <- mget(ls(), envir = globalenv())
Вы можете использовать Filter
для фильтрации списка переменных. Я думаю, это немного проясняет замысел кода. (Хотя это делает то же самое под крышкой.)
Filter(function(x) attr(x, "foo") == "bar", all)
Ответ №2:
Вот один из способов сделать это
# collect all objects in global environment
all = lapply(ls(), get)
# extract objects with attribute = "bar"
bar = all[lapply(all, attr, "foo") == "bar"]