2013-08-03 43 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))