File tree Expand file tree Collapse file tree 2 files changed +31
-4
lines changed Expand file tree Collapse file tree 2 files changed +31
-4
lines changed Original file line number Diff line number Diff line change 1818# ' @export
1919`[.qenv` <- function (x , names ) {
2020 checkmate :: assert_class(names , " character" )
21- names_in_env <- intersect(names , ls(get_env(x )))
22- if (! length(names_in_env )) {
21+ possible_names <- ls(get_env(x ))
22+ names_warn <- setdiff(names , possible_names )
23+ names <- intersect(names , possible_names )
24+ if (! length(names )) {
2325 warning(" None of `names` elements exist in `qenv`. Returning empty `qenv`." )
2426 return (qenv())
2527 }
2628
27- limited_code <- get_code(x , names = names_in_env )
29+ if (length(names_warn )) {
30+ warning(
31+ sprintf(
32+ " Some elements of `names` do not exist in `qenv`. Skipping those: %s." ,
33+ paste(names_warn , collapse = " , " )
34+ )
35+ )
36+ }
37+
38+ limited_code <- get_code(x , names = names )
2839 indexes <- which(x @ code %in% limited_code )
2940
30- x @ env <- list2env(mget(x = names_in_env , envir = get_env(x )))
41+ x @ env <- list2env(mget(x = names , envir = get_env(x )))
3142 x @ code <- limited_code
3243 x @ id <- x @ id [indexes ]
3344 x @ warnings <- x @ warnings [indexes ]
Original file line number Diff line number Diff line change 1+ testthat :: test_that(" `[.` returns empty qenv for names not in qenv" , {
2+ data <- within(qenv(), {x = 1 ; a = 2 })
3+ testthat :: expect_warning(
4+ testthat :: expect_equal(data [" y" ], qenv()),
5+ " None of `names` elements exist in `qenv`. Returning empty `qenv`."
6+ )
7+ })
8+
9+ testthat :: test_that(" `[.` returns limited qenv for some names not in qenv" , {
10+ data <- within(qenv(), {x = 1 ; a = 2 })
11+ testthat :: expect_warning(
12+ testthat :: expect_equal(data [c(" y" , " a" )], data [" a" ]),
13+ " Some elements of `names` do not exist in `qenv`. Skipping those: y."
14+ )
15+ })
16+
117testthat :: test_that(" `[.` extracts proper objects" , {
218 q <- qenv()
319 code <- c(" x<-1" , " a<-1;b<-2" )
You can’t perform that action at this time.
0 commit comments