2017-03-17 74 views
1

使用下面的代码:使用purrr的map()函数,结果没有找到对象

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() 

我收到以下错误:

Error in .f(.x[[i]], ...) : object 'x1' not found

我怀疑它有事情做与作用域或环境,当对象,而不是在函数全局定义,我可以通过评估

x_objects_list <- purrr::map(x_objects, get) 
使用的代码

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

+0

与跑得过它的功能,它炒锅精细 –

+0

你应该使用'mget()' – andrew

+0

你能指定为什么@andrew? – Michael

回答

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()