2013-08-03 39 views
1

R中的addmargins函數無法在本地範圍內找到函數。我的意思是,這並不工作:Addmargins在R中找不到函數

foo <- function(x) { 
    bar <- function(y) sum(y) 
    addmargins(x, c(1), list(new=bar)) 
} 
foo(matrix(1:20, nrow=4)) 
# => Error in eval(expr, envir, enclos) : object 'bar' not found 

而且這樣做:

bar <- function(y) sum(y) 
foo <- function(x) { 
    addmargins(x, c(1), list(new=bar)) 
} 
foo(matrix(1:20, nrow=4)) 
# => 
#  [,1] [,2] [,3] [,4] [,5] 
# [1,] 1 5 9 13 17 
# [2,] 2 6 10 14 18 
# [3,] 3 7 11 15 19 
# [4,] 4 8 12 16 20 
# [5,] 10 26 42 58 74 

我怎麼能在本地範圍內使用addmargins與變量,如在第一個例子。

回答

1

嘗試,而不是執行以下操作:

foo <- function(x) { 

    bar <- function(y) sum(y) 
    func <- list(new=bar) 
    addmargins(x, c(1), func) 
} 
foo(matrix(1:20, nrow=4))