Я хочу получить "список" для
- всех загруженных пакетов и
- всех объектов в рабочей области
вместе с информацией, если исходный код доступен для этих пакетов / объектов (атрибут srcref
).
Как я могу это сделать (в основном, как ссылки на исходный код работают с пакетами, действительно ли мне нужно «сканировать» атрибуты каждого объект в пакете)?
Справочная информация. Я хочу сообщить пользователю, что источник может отсутствовать при возникновении ошибок, поэтому диагностика проблемы может быть более сложной (имена файлов и номера строк недоступны).
Ожидаемый результат:
Например. data.frame
с этими столбцами:
- Имя пакета (пустое или «глобальное» для объектов рабочей области)
- Имя объекта (может быть пустым, если нет необходимости проверять все объекты пакета)
- Has_source_references (логическое значение)
Пока мой код (частично основанный на комментарии @mnist - TXH!):
objs <- lapply(search(), function(p) {
print(p)
objs <- ls(p)
res <- if (length(objs) > 0 & !(p %in% c("package:base"))) data.frame(objs = objs, pkg = sub("package:", "", p), stringsAsFactors = F) else data.frame(objs = character(0), pkg = character(0))
return(res)
} )
all.objs <- do.call(rbind, objs)
# This does not work: I try to get the srcref of every object. No srcref means no source code
all.objs$srcref <- attr(mget(all.objs$objs, inherits = T), "srcref")
srcref
ссылки: