2017-03-17 70 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()