在函数内的get()上使用purrr的map()函数,导致找不到对象

时间:2017-03-17 10:05:59

标签: r scope environment purrr

使用以下代码时:

get_objects <- function() {
    x1 <- 123
    x2 <- 23535

    x_objects <- ls(pattern = 'x')
    print(x_objects)
    x_objects_list <- purrr::map(x_objects, get)

    return(x_objects_list)

} 

f <- get_objects()

我收到以下错误:

  

.f(.x [[i]],...)中的错误:object&#39; x1&#39;找不到

我怀疑它与范围或环境有关,因为当对象是全局定义的时候,而不是在函数中,我可以通过评估来使用代码

x_objects_list <- purrr::map(x_objects, get)

直接在控制台中。原因是我想要一个具有特定名称的数据帧列表,以便我可以迭代地对它们执行操作。

1 个答案:

答案 0 :(得分:1)

不确定您要做什么,但由于您没有与您分享更大的范围,这应该可以解决您当前的问题:

get_objects <- function() {
    x1 <- 123
    x2 <- 23535

    x_objects <- ls(pattern = 'x')
    x_objects_list <- purrr::map(x_objects, get, envir = sys.frame(sys.parent(0)))

    return(x_objects_list)

} 

f <- get_objects()